Heim > Fragen und Antworten > Hauptteil
js in der Konsole
++[[]][0]
为什么这个不报错++[]
Wo ist dieser Fehlerbericht
迷茫2017-05-19 10:22:53
++[[]][0]
: [[]]
是一个只包含一个空数组的数组,那么根据运算符优先级,[] > (prefix)++
,运算[[]][0]
,得到一个空数组Array(0)
,是一个对象,并且是数组中的一个值,符合左值的条件.之后进行(prefix)++
运算,由于++
运算将执行数据类型转换(PS:Javascript中具体的数据类型转换太复杂了,我就不展开了),这里Array[0]
将转换成0
,结果++
得到1.
具体可看控制台输出:
console.log([[]])
// > [Array(0)]
console.log([[]][0])
// > []
++[]
: 左值是一个空数组,不是一个合法的左值,所以报错.
什么是左值:
左值是一个古老的术语,它是指 表达式只能出现在赋值运算符的左侧。在JavaScript中,变量,对象属性和数组元素均是左值.