亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JS中一個賦值的問題

JS中一個賦值的問題

哆啦的時光機 2018-11-13 13:14:17
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,有點不太理解,感覺應該是解析時候是從左到右,但是實際執行會是從右到左這樣?
查看完整描述

1 回答

?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

這個我剛剛看到了一個大神的講解挺好的(正在查資料核對),對象的連等賦值,大概解釋是這樣的:foo.x = foo = { b: 3 },在解釋器執行中先看foo.x 和foo是否已經創建如果未創建就創建它并且將他們都指向最右邊的對象,明顯foo創建了并且指向{ a: 2 },foo.x還未創建,于是創建它并且讓它指向null,此時bar和foo都指向{a:2,x:null},再將他們都指向右邊的對象{b:3},此時bar指向{a:2,x:{b:3}},foo指向{b:3};


查看完整回答
反對 回復 2018-12-14
  • 1 回答
  • 0 關注
  • 471 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號