1. 程式人生 > >js賦值改變後原來的東西也改變了,影響了好幾個其它使用同一個源資料的原因以及解決方法

js賦值改變後原來的東西也改變了,影響了好幾個其它使用同一個源資料的原因以及解決方法

【原因】:陣列賦值目測在php/js這兩種語言中的賦值都是應用傳遞(所謂引用傳遞就是所謂的賦值其就是共享同一個地址),一般的字串整型等資料型別都是值傳遞所以不存在這類情況

【解決方法】:在進行陣列間賦值時,將原來的賦值方式換以下即可,程式碼如下

//例如我有一個js陣列
var result={45,54,65};
var json_datas={};//我自定義一個空陣列來進行賦值

//一般我們都是直接這樣賦值的
json_datas=result;//(這種就會導致你接下來的後續操作如果對json_datas進行任何修改result也會受影響) 
//此時你檢視json_datas肯定是和result一樣的,但是如果我對json_datas進行了元素的修改,如下
json_datas={22,55,66};//此時你再檢視result和json_datas都變成了{22,55,66}

//下面的方式進行賦值就不會存在修改json_datas而導致result也受影響,也就是說隨便你json_datas怎麼改變都不會對我原來的result造成任何影響
json_datas=$.extend(true,{},result);


以上情況估計很多人都知道原理,只是有時自己忽略掉了,在此提醒一下大家