第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

關(guān)于一道面試題的疑惑?

關(guān)于一道面試題的疑惑?

猛跑小豬 2018-10-18 18:10:18
var obj = {    a: 1};obj.b = obj = {    c: 2};console.log(obj.b);//undefinedobj.b 為何輸出undefined ?
查看完整描述

1 回答

?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗 獲得超10個贊

其實這個東西這么解釋會清楚點:

.的優(yōu)先級是高于=的,所以整個等式先計算.的運算

根據(jù)上面,所以整個等式第一步是先添加一個b的地址,等式大概變成這個樣子[obj.b的地址]=obj={c:2}

=是從右向左運算的,而且是把=號右邊的那個賦值給左邊的

所以,變形后的等式運算時分為兩步obj={c:2},然后[obj.b的地址]=obj。

由于第一步的時候,obj已經(jīng)指向新的地址,所以和[obj.b的地址]中的obj已經(jīng)不是同一個。

所以,第二步的時候,[obj.b的地址]=obj是把新的obj賦值給原本obj.b的地址

所以才會出現(xiàn)obj輸出{c:2}的情況。

更清晰一點,看看一個代碼:

var obj = {

    a: 1

};

var obj2 = obj;

obj.b = obj = {

    c: 2

};

console.log(obj); // {c:2}

console.log(obj2); // { a:1, b:obj }


查看完整回答
反對 回復(fù) 2018-11-18
  • 1 回答
  • 0 關(guān)注
  • 477 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號