賦值前:
賦值後:
.運算子優先於=賦值運算,先建立
a.x是乙個位址,a也是乙個位址,a.x建立後,也就有了b.x,它們是同乙個位址
js賦值是右結合的,從右邊開始向左邊賦值,先將賦值給位址a,再將賦值給位址a.x(其實也是b.x,它們是同乙個位址)
另乙個解釋:
解析器在接受到 a.x = a = 這樣的語句後,會這樣做:
1.找到 a.x 和 a 的指標。如果已有指標,那麼不改變它。如果沒有指標,即那個變數還沒被申明,那麼就建立它,指向 null。
2.a 是有指標的,指向 ;a.x 是沒有指標的,所以建立它,指向 null。
然後把上面兩個指標,都指向最右側賦的那個值,即
JS連等賦值的坑
關於js連等賦值有個經典的筆試題 var a var b a a.x a console.log a.x undefined console.log b.x 咋一看,一臉懵逼,這都什麼玩意.我一開始也是這個想法,不過理解之後發現,不是題目坑,確實自己水平還不到位.本文先介紹理解上述筆試題需要的知識點...
JS連等賦值的坑
關於js連等賦值有個經典的筆試題 var a var b a a.x a console.log a.x undefined console.log b.x 咋一看,一臉懵逼,這都什麼玩意.我一開始也是這個想法,不過理解之後發現,不是題目坑,確實自己水平還不到位.本文先介紹理解上述筆試題需要的知識點...
JS中連等賦值的個人理解
var a var b a a.x a console.log a.x undefined console.log b.x 如上,a.x 是 undefined b.x 是 為什麼會這樣呢,我個人理解是這樣的。先把 的記憶體位址看作 位址e 的記憶體位址看作 位址f 瀏覽器在看到 a.x a 這條語...