3 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
在調(diào)用函數(shù)change
的時(shí)候,change
這個(gè)函數(shù)的作用域內(nèi)會(huì)有一個(gè)新的變量arr
,這個(gè)arr
和全局的arr
都指向同一個(gè)內(nèi)存地址
,即存儲(chǔ)數(shù)組[1, 2]
的內(nèi)存地址。
代碼段一執(zhí)行arr = [1, 2, 3]
,也就是在內(nèi)存中存儲(chǔ)一個(gè)新的數(shù)組[1, 2, 3]
,然后把這個(gè)數(shù)組的內(nèi)存地址賦值給arr
,注意這個(gè)arr
是change
函數(shù)內(nèi)的變量,所以這個(gè)arr
指向數(shù)組[1, 2, 3]
的內(nèi)存地址,而全局的arr
仍然指向[1, 2]
的內(nèi)存地址。注意[1, 2, 3]
是一個(gè)新的數(shù)組,所以需要一個(gè)新的內(nèi)存空間。
代碼段二執(zhí)行arr.push(3)
,首先會(huì)找到arr
指向的數(shù)組,也就是[1, 2]
,然后往這個(gè)數(shù)組中添加數(shù)據(jù)3
,因?yàn)?code>change函數(shù)內(nèi)的arr
和全局的arr
指向的是同一個(gè)內(nèi)存地址,而這個(gè)地址指向的內(nèi)容已經(jīng)改變了。

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