搜尋

首頁  >  問答  >  主體

javascript + 操作符

js 在控制台中

[[]][0] 為什麼這個不報錯
[] 這個報錯呢

我想大声告诉你我想大声告诉你2748 天前411

全部回覆(2)我來回復

  • 迷茫

    迷茫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中,變量,物件屬性和數組元素都是左值.

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:22:53

    我以前回答過這個問題,直接貼連結了:

    js型轉換問題

    回覆
    0
  • 取消回覆