測試題1:內存分析,運算符優先級測試
var a = {n: 1} var b = a a.x = a = {n: 2} console.log(a.n) // 2 console.log(b.n) // 1 console.log(a) // { n: 2 } console.log(b) // { n: 1, x: { n: 2 } } console.log(a.x) // undefined console.log(b.x) // { n: 2 } // 第一步:a,b都指向了{n: 1},這個對象 // 第二步:a.x這個運算符優先於=號,這時候a和b指向的對象新增了一個屬性x,但沒有值{n:1,x:} // 第三步:等於號從右到左開始,這時候a指向了另一個對象{n:2},b仍是指向原來的對象{n:1,x:} // 第四步:a.x = a 其實就是這個對象{n:1,x:},x屬性指向了{n:2}這個對象 // 因此最後結果b指向的是{n:1,x:{n:2}},a指向的是{n:2}
做用域與做用域鏈spa