【发布时间】:2010-07-07 01:39:57
【问题描述】:
是的,它可以在我的萤火虫控制台中使用。为什么这样的东西没有语法错误?
[] = 5; [] = doThis(); [] = (function() {})();
只是好奇为什么允许这样做。
【问题讨论】:
-
顺便说一句,这是 Chrome 中的一个错误...我认为它只是忽略了您的设置并继续前进。
标签: javascript
是的,它可以在我的萤火虫控制台中使用。为什么这样的东西没有语法错误?
[] = 5; [] = doThis(); [] = (function() {})();
只是好奇为什么允许这样做。
【问题讨论】:
标签: javascript
看起来 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中运行东西来猜测含义......)
【讨论】:
我在 Chrome 中收到“未捕获的 ReferenceError: Invalid left-hand side in assignment”。 IE8 抛出“错误:无法分配给 '[object]'”。 FF 确实不会抛出错误。
这很可能只是 Firefox JavaScript 引擎的故障,无论如何,似乎不会影响数组文字 [] 的功能。
【讨论】: