Javascript:[] = 5,没有语法错误?为什么?

时间:2010-07-07 01:39:58

标签: javascript

是的,它适用于我的firebug控制台。为什么这样的事情没有语法错误?

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

只是好奇为什么允许它。

2 个答案:

答案 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引擎的失败,无论如何,似乎不会影响数组文字[]的功能。