是的,它适用于我的firebug控制台。为什么这样的事情没有语法错误?
[] = 5; [] = doThis(); [] = (function() {})();
只是好奇为什么允许它。
答案 0 :(得分:14)
看起来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中运行东西猜测其含义......)
答案 1 :(得分:2)
我在Chrome中收到了“未捕获的ReferenceError:分配中的左侧无效”。 IE8抛出“错误:无法分配给'[object]'”。确实,FF确实没有抛出错误。
这很可能只是Firefox JavaScript引擎的失败,无论如何,似乎不会影响数组文字[]的功能。