javascript中的賦值我們都知道,是從右至左的var a = b = c上面的語句實際執行時是這樣的b = c
var a = b但是如果有對象參與進來呢?昨天看到的一個例子var foo = { a: 2 }
var bar = foo
foo.x = foo = { b: 3 }前兩行很簡單,就是將bar也指向了foo。第三行,剛開始是執行foo = { b: 3 },這樣將foo重新指向了另一個對象。接下來的一句foo.x = foo,這句我本來以為是foo.x指向foo,這樣foo就成了一個循環引用自身的對象,即foo = { b: 3, x: { b: 3, x: { b: 3, x: { ...... } } }}但是實際測試發現,foo.x = foo這句里面的foo.x中的foo是指向bar,也就是還沒重新賦值的foo,有點不太理解,感覺應該是解析時候是從左到右,但是實際執行會是從右到左這樣?
JS中一個賦值的問題
哆啦的時光機
2018-11-13 13:14:17