關於a.x = a = {n:2} 的思考 [快手]

面試遇到的一個題目, 分享下

關於js中連續賦值的問題, 通常狀況寫不要隨便寫連續賦值, 容易出問題 考慮下一下會輸出什麼內容, 先思考下, 而後上機測試下看看考慮的對不對面試

var a = {
    n:1,
}
var b =a ;
a.x =  a = {n:2}
console.log(a.x); 
console.log(b.x); 
console.log(a); 
console.log(b); 
複製代碼

答案:

var a = {
    n:1,
    }
var b =a ;
a.x =  a = {n:2}
//a指向了一個新地址
//a.x原來中的a仍是指向原來位置,因此 a.x = a = {n:2} 等於實現了 a.x = {n:2}
console.log(a.x); //undefined , 緣由是此時a 由於a = {n:2}操做, a的指向已經變了, 如今a跟以前的a.n中的a不是一個指向了
console.log(b.x); //{n:2} 
console.log(a); //{n:2} a指向了一個新地址
console.log(b);  //{n:1 x:{n:2} //a.x原來中的ah仍是指向原來位置 a.x = a = {n:2} 等於實現了 a.x = {n:2}
複製代碼
相關文章
相關標籤/搜索