【问题标题】:Javascript: [] = 5, No Syntax Error? Why?Javascript:[] = 5,没有语法错误?为什么?
【发布时间】:2010-07-07 01:39:57
【问题描述】:

是的,它可以在我的萤火虫控制台中使用。为什么这样的东西没有语法错误?

[] = 5; [] = doThis(); [] = (function() {})();

只是好奇为什么允许这样做。

【问题讨论】:

  • 顺便说一句,这是 Chrome 中的一个错误...我认为它只是忽略了您的设置并继续前进。

标签: javascript


【解决方案1】:

看起来 FF 中的 Javascript 允许使用匹配进行赋值,因此您可以一次性设置多个变量:

[x,y] = [5,6]; // sets x to 5 and y to 6

“显然”,一些 JS 实现非常宽容,并且会默默地忽略任何额外的值,所以这样做是一样的:

[x,y] = [5,6,7];

这不会分配任何东西:

[] = [5,6,7];

最重要的是,看起来 FF 甚至愿意使用根本不匹配数组的情况:

[x] = 5; // makes x undefined

因此,如果您使用 [] = whatever,则“没有任何东西被分配未定义的值”,因此归结为仅评估 RHS。

(免责声明:这一切都只是通过在FF中运行东西来猜测含义......)

【讨论】:

【解决方案2】:

我在 Chrome 中收到“未捕获的 ReferenceError: Invalid left-hand side in assignment”。 IE8 抛出“错误:无法分配给 '[object]'”。 FF 确实不会抛出错误。

这很可能只是 Firefox JavaScript 引擎的故障,无论如何,似乎不会影响数组文字 [] 的功能。

【讨论】:

  • 啊哈,在 Firefox 和我身上都失败了,因为我实际上并没有在另一个浏览器中测试这个。
猜你喜欢
  • 2015-11-10
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2015-03-23
  • 2015-01-11
相关资源
最近更新 更多