讀《像javascript一樣思考》筆記

__Vincent發表於2020-02-26
[[]][0]++; //沒問題
[]++ //會報錯

// 首先按照正常解題思路
var a = [];
var b = [a];
console.log(b); 
//列印出來是這個東西 二維陣列 - [[]]
//[[]][0] 就等價於 b[0], b[0]也就是a,a就是個[], 
//所以 [[]][0]++被你解析出來 就是 []++, 但是正如第二行所示,會報錯
//這是為什麼呢?
複製程式碼

成員表示式的求值結果並非結果本身([]),而是對該值的一個引用(Reference)——可以參考這裡的第8步。因此實際上,諸如 [0] 的訪問返回的是對外部陣列的第 0 個位置的引用,而非位於該位置的值本身。

相關文章