js數(shù)組賦值與引用的防踩坑指南


最近在寫(xiě)代碼的時(shí)候,出現(xiàn)了一個(gè)bug,具體的情況是這樣的

var a = ["1"];
b = a
for(x in b){
a.push("2")
}

然而運(yùn)行發(fā)現(xiàn),明明push的對(duì)象是a數(shù)組,b數(shù)組的值居然也變了。


我印象中,給字符串賦值的話,b應(yīng)該是不會(huì)變的呀。我又測(cè)試了一下,結(jié)果的確是b沒(méi)有變。


百思不得其解的我,去問(wèn)了下度娘,得到了答復(fù)。

str = arr; //這個(gè)不是賦值,將數(shù)組arr的引用賦給str,所以改變str也會(huì)改變arr (js實(shí)際創(chuàng)建的str是一個(gè)對(duì)象);

正確賦值:
1、str = [].concat(arr);
content用于連接多個(gè)數(shù)組:arr1.concat(arr2,arr3,。。。。)

2、str=arr.slice(0);
返回一個(gè)新數(shù)組,從0到最后。
(slice有兩個(gè)參數(shù):xx.slice(start,end),返回?cái)?shù)組xx下標(biāo)從start到end的元素。若未定義end則返回start到結(jié)尾。)

效果展示:

總結(jié):arr = arr是引用,str = str是賦值,一個(gè)是給的地址,一個(gè)是給的值。

最后附上 原作者的傳送門(mén)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 最先接觸編程的知識(shí)是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí),c語(yǔ)言,java語(yǔ)言,單片機(jī)的匯編語(yǔ)言等;大學(xué)畢...
    oceanfive閱讀 3,395評(píng)論 0 7
  • Javascript有很多數(shù)組的方法,有的人有W3C的API,還可以去MDN上去找,但是我覺(jué)得API上說(shuō)的不全,M...
    頑皮的雪狐七七閱讀 4,493評(píng)論 0 6
  • 第五章******************************************************...
    fastwe閱讀 805評(píng)論 0 0
  • 古人說(shuō),好人不長(zhǎng)命,禍害活千年。 今年, 我深刻的體會(huì)到了! 自從周五聽(tīng)說(shuō)游主任一病不起的噩耗后, 心理就開(kāi)始害怕...
    回不去的青春1986閱讀 246評(píng)論 0 0
  • 6月27日 星期三 天氣熱熱熱 昨晚上睡覺(jué)十點(diǎn)了,小兔子一直配合著我寫(xiě)作業(yè)沒(méi)有一句怨言。...
    小兔麻麻_(kāi)ace0閱讀 169評(píng)論 0 0

友情鏈接更多精彩內(nèi)容