繁体   English   中英

JavaScript Quirk-数组增量

[英]JavaScript Quirk - Increment on array

为什么是

++[[]][0] == 1

但是呢

++[]

抛出错误

他们不一样吗? 我相信第一个示例在数组上执行index-read ,因此您可以在数组中获取数组。 然后执行增量。 如果是这样,为什么我不能做第二个例子?

++是赋值运算符。 它需要一个有效的左侧操作数(即使它可以在++的右侧)。

[]只是一个值,不是您可以分配的值。

[[]][0] 值为 [],但它是有效的左侧,因为它指向现有数组中的一个元素。 这样行得通。

举一个希望不那么令人困惑的示例:

var a = 1
1++ // throws an error
a++ // works fine

不要紧,是在什么样的价值a 最坏的情况是, ++可以返回NaN,绝不会出错,只要它可以分配结果即可。

您的示例中唯一的JavaScript古怪之处在于+[] + 1值为1,因为将空数组强制转换为空String,然后将其显式设置为零( +""0 ),然后将其添加到1

++运算符始终强制转换为数字,这与+会用""满足的情况不同(因此[] + 1变成"" + "1" )。 因此,在分解++ ,不要忘记将操作数强制为数字(并不是在您的示例中它最终很重要)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM