js 在控制臺中++[[]][0] 為什么這個不報錯++[] 這個報錯呢
javascript + 操作符
陪伴而非守候
2018-11-08 13:15:26
TA貢獻1895條經(jīng)驗 獲得超7個贊
++[[]][0]
: [[]]
是一個只包含一個空數(shù)組的數(shù)組,那么根據(jù)運算符優(yōu)先級,[] > (prefix)++
,運算[[]][0]
,得到一個空數(shù)組Array(0)
,是一個對象,并且是數(shù)組中的一個值,符合左值的條件.之后進行(prefix)++
運算,由于++
運算將執(zhí)行數(shù)據(jù)類型轉(zhuǎn)換(PS:Javascript中具體的數(shù)據(jù)類型轉(zhuǎn)換太復(fù)雜了,我就不展開了),這里Array[0]
將轉(zhuǎn)換成0
,結(jié)果++
得到1.
具體可看控制臺輸出:
console.log([[]]) // > [Array(0)] console.log([[]][0]) // > []
++[]
: 左值是一個空數(shù)組,不是一個合法的左值,所以報錯.
什么是左值:
左值是一個古老的術(shù)語,它是指 表達式只能出現(xiàn)在賦值運算符的左側(cè)。在JavaScript中,變量,對象屬性和數(shù)組元素均是左值.
舉報