4 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
var a = {"x": 1}; //對(duì)象是引用類型,這里把對(duì)象{"x": 1}的引用地址賦值給變量a
var b = a; //把a(bǔ)所引用的對(duì)象地址賦值給b,此時(shí)a和b指向同一個(gè)對(duì)象
a.x = 2; //把a(bǔ)所指向?qū)ο蟮膶傩詘設(shè)置為2,此時(shí)該對(duì)象為{"x": 2}
b.x; //由于a和b指向同一個(gè)對(duì)象,所以b.x = a.x = 2
a = {"x":3}; //這里重新對(duì)a進(jìn)行賦值,把一個(gè)新對(duì)象{"x": 3}的引用地址賦值給變量a,此時(shí)a指向這個(gè)新對(duì)象{"x": 3},而b仍然指向原來的對(duì)象{"x": 2}
console.log(b.x); //這里輸出2就順理成章了
整個(gè)過程就像我在注釋里寫的那樣,最后console.log(b.x)的值為2
建議題主可以翻閱一下《Javascript高級(jí)程序設(shè)計(jì)》,我之前看的是第二版,有一章講解了引用類型和值類型,看完應(yīng)該就懂了,或者參考一下網(wǎng)上各路大神的博客

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
添加回答
舉報(bào)