料青山看我應(yīng)如是
2018-08-02 09:21:55
var obj1={x:5};var obj2=obj1;obj1.a=obj1={x:6};console.log(obj1.a); //undefinedconsole.log(obj2.a);//{x:6}自己理解的正好和答案相反,求解
2 回答

慕絲7291255
TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
分析代碼:
a.x=a={n:2}
js的賦值運(yùn)算是右結(jié)合的,上面等同于a.x=(a={n:2})
js的求值運(yùn)算是從左到右的(PS:和同事討論,他說是從左到右,我認(rèn)為是從右到左,最后發(fā)現(xiàn)是我錯(cuò)了)
1)a.x=(括號(hào)內(nèi)的最終結(jié)果)
查找a的x屬性不存在后在a指向的對(duì)象中添加一個(gè)屬性x,這個(gè)x屬性要把一個(gè)結(jié)果賦給它,那好吧,我等著結(jié)果
2)因?yàn)槭且@得括號(hào)內(nèi)的結(jié)果,那么a.x就一直等著括號(hào)內(nèi)給他返回結(jié)果,所以開始求值a={n:2}得到結(jié)果后返回給這個(gè)新屬性x
3)回到括號(hào)內(nèi)的a={n:2},a發(fā)生指向改變了
添加回答
舉報(bào)
0/150
提交
取消