Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:[]=5,没有语法错误?为什么?_Javascript - Fatal编程技术网

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

Javascript:[]=5,没有语法错误?为什么?,javascript,Javascript,是的,它在我的firebug控制台中工作。为什么这样的东西没有语法错误 [] = 5; [] = doThis(); [] = (function() {})(); 我只是好奇为什么它被允许。我在Chrome中得到了一个“未捕获的引用错误:赋值中的左侧无效”。IE8抛出“错误:无法分配给“[object]”。FF确实不会抛出错误 这很可能只是Firefox JavaScript引擎的故障,在任何情况下,似乎都不会影响数组文字[]的功能。看起来FF中的JavaScript允许使用匹配进行赋值,因

是的,它在我的firebug控制台中工作。为什么这样的东西没有语法错误

[] = 5; [] = doThis(); [] = (function() {})();
我只是好奇为什么它被允许。

我在Chrome中得到了一个“未捕获的引用错误:赋值中的左侧无效”。IE8抛出“错误:无法分配给“[object]”。FF确实不会抛出错误


这很可能只是Firefox 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
因此,如果您使用
[]=which
,那么“没有任何东西会被分配一个未定义的值”,因此它归结为只计算RHS


(免责声明:这只是通过在FF中运行东西来猜测意思…

这是Chrome中的一个错误。我认为这只是忽略了您的设置并继续前进。啊哈,在Firefox和我身上失败了,因为我没有在另一个浏览器中实际测试这一点。这里有一个关于mozilla解构分配语法的详细线程: