前端JS面試題

測試題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

相關文章
相關標籤/搜索