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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

這是通過引用在javascript上調(diào)用的嗎?

這是通過引用在javascript上調(diào)用的嗎?

不負(fù)相思意 2021-05-08 14:12:48
我已經(jīng)搜索過有關(guān)通過引用在javascript上調(diào)用的信息,但仍然感到困惑??紤]一下此代碼。let arr = [];let temparr = [2,3,4];arr = temparr;temparr.push(5);console.log(arr);   //[2,3,4,5]console.log(temparr); //[2,3,4,5]let arr2 = [];let temparr2 = [2,3,4];arr2 = temparr2;temparr2 = [1,2];console.log(arr2);  //[2,3,4]console.log(temparr2);   /[1,2]對(duì)于第一種情況,由于arr = temparr,arr會(huì)受到temparr的影響,但是,在第二個(gè)示例中,arr2不會(huì)受到temparr2中的修改的影響。我的問題是在第一個(gè)示例中,為什么arr首先受到temparr的修改的影響?這是在按引用方式致電嗎?如果是這樣,它將在什么情況下觸發(fā)該操作?在第二個(gè)示例中,唯一的區(qū)別是我沒有使用push,而是分配了新數(shù)組來修改temparr2。但是這次arr2沒有受到影響。與第一個(gè)示例有什么區(qū)別?非常感謝你
查看完整描述

1 回答

?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊


您的問題與參數(shù)的傳遞方式無關(guān)(順便說一句,所有值在JavaScript中始終通過Value傳遞),而與對(duì)象的存儲(chǔ)方式有關(guān)。

在第一個(gè)示例中,與您的問題最相關(guān)的一行是:

arr = temparr;

在這里,您正在設(shè)置第二個(gè)變量,以保留與第一個(gè)變量相同的值,但是對(duì)象變量不保留對(duì)象,它們保留了內(nèi)存中對(duì)象存儲(chǔ)位置。因此,在該行之后,您有兩個(gè)都指向同一個(gè)基礎(chǔ)對(duì)象的變量。如果它們中的任何一個(gè)修改了該基礎(chǔ)對(duì)象,則另一個(gè)將看到相同的東西,因?yàn)樗鼈兌级贾赶蛞粋€(gè)對(duì)象。

在第二個(gè)示例中,您以類似的方式開始:

arr2 = temparr2;

再次,它使您擁有兩個(gè)指向同一基礎(chǔ)對(duì)象的變量。但是,然后執(zhí)行此操作:

temparr2 = [1,2];

它不會(huì)修改一個(gè)基礎(chǔ)對(duì)象,它只是將第二個(gè)變量重新分配給另一個(gè)對(duì)象,現(xiàn)在這兩個(gè)變量不再指向同一對(duì)象。

確實(shí)與說什么沒什么不同:

x = 7;

然后說:

x = 8;

中的舊值x消失了,并且存儲(chǔ)了一個(gè)全新的值。

如果要修改基礎(chǔ)數(shù)組,則可以通過Array API進(jìn)行,例如:

temparr2.splice(2,1); // Delete one item at index position 2

這就是為什么.push()在第一個(gè)示例中使用數(shù)組時(shí)會(huì)對(duì)其進(jìn)行修改的原因-在對(duì)象上工作,而不是重新分配變量。


查看完整回答
反對(duì) 回復(fù) 2021-05-20
  • 1 回答
  • 0 關(guān)注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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