慕虎7371278
2018-12-10 13:19:20
var a = [1,2,3];var b = a;b.push(4);alert(b);這里輸出的結果為什么是[1,2,3,4]呢?為什么會修改了原數(shù)組的值呢? var a = [1,2,3]; var b = a; b = [1,2,3,4]; alert(a); 這個題目和上面的有什么區(qū)別呢?
1 回答

30秒到達戰(zhàn)場
TA貢獻1828條經(jīng)驗 獲得超6個贊
首先第一個問題,是js除開基本類型的引用傳遞,所以在
var a = [1,2,3]; //a存儲的是一個內(nèi)存地址x,該地址存放的內(nèi)容是[1,2,3]
var b = a; //將a所指向的內(nèi)存地址x賦值給b
b.push(4); //在內(nèi)存地址x指向的數(shù)據(jù)中增加元素4
其過程是 x => [1,2,3] x => [1,2,3,4] "=>"表示指向內(nèi)存
第二個問題和第一個問題的區(qū)別在于對于b的再次賦值
b = [1,2,3,4]; //清空原有內(nèi)存地址x中存放的數(shù)據(jù),重新賦值為[1,2,3,4]
這段代碼的過程: x => [1,2,3] x => null x => [1,2,3,4]
在這個過程中,因為a b都是指向內(nèi)存地址x,所以不管是a還是b重新賦值后,改變的都是該內(nèi)存地址的數(shù)據(jù),所以
a=x=>[1,2,3,4]
b=x=>[1,2,3,4]
添加回答
舉報
0/150
提交
取消