日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

js中Object类型和Array类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?

發布時間:2023/11/27 生活经验 24 豆豆

?

JavaScript中的Object和Array都是指針變量類型,例如我聲明??

let obj={a:1};let arr=[1,2,3];

其中的obj和arr存放的僅僅是對應的對象和數組內容所存放的內存地址值

當你用以下代碼賦值給另外的新變量的時候

let obj={a:1};let arr=[1,2,3];let obj_new=obj;let arr_new=arr;

我們對 obj_new 和 arr_new 的內容進行修改,原始的 obj 和 arr 變量的值也會發生變化

我擦!還能說人話嗎?

好啦,我來用通俗易懂的類比

你給翻譯翻譯,什么是TM的指針變量?

強哥,你給翻譯翻譯,什么TM的叫做TM的指針變量?










舉個例子:

如果“強哥”是一個指針變量 ,無論出現在哪里,你看到的只是“強哥”這兩個中文漢字,就如同一個別名。

當我們說“阿強”就是“強哥”,等同于把"強哥“賦值給了“阿強”。

如果后面強哥變胖了,那么阿強也變胖了。

如果后面阿強變瘦了,那么強哥也變瘦了。

也就是指針變量類似引用了一個實際客觀載體,就是一個別稱,當我們把這個別稱賦給任何另外的別稱的時候,原有別稱所指代的內容發生變化,新別稱所指代的內容也會對應發生變化,就像量子糾纏一樣。

我不知道這樣的解釋能夠理解嗎,如還不能理解歡迎留言。我繼續思考如何講的更加淺顯易懂。

那么問題來了

如何取消這種修改值后,關聯數據變化呢???

請聽下回分解?JS如何深度復制對象和數組,避免指針變量引用修改值_你摯愛的強哥?給你發來1條消息?-CSDN博客//自定義深度復制對象or數組let copyObjOrArr = o => { let isArray = o instanceof Array; let isObject = o instanceof Object; if (!isObject) return o; let n = (isArray ? [] : {}); for (let k in o) n[k] = copyObjOrArr(o[k]); return n.https://s-z-q.blog.csdn.net/article/details/121153910

總結

以上是生活随笔為你收集整理的js中Object类型和Array类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。