总结归纳:
1、普通的赋值是复制栈区内容。
2、基本类型的数据在栈区存放数据自身,var a=b; //a与b无关。
引用类型数据在栈区存放数据地址。 var a=b; //a,b联动
3、基本数据类型包括:undefined,boolean,number,string,null
引用类型:对象、数组、函数
-
用jq的$.extend方法(多维数组)
<script type="text/javascript"> var a=[1]; var b; b= $.extend(true,{},a)
//var zNodesNew = $.extend(true,[],zNodesTmp);
b[0]++; alert(b[0]); </script>
-
用数组的concat方法
<script type="text/javascript"> var a=[1]; var b=a.concat(); b[0]++; alert(a[0]); </script>
-
for循环数组,挨个赋值
var a=[1,2,3]; var b=[]; for(var i=0; i<a.length; i++){ b[i]=a[i]; }
-
数组的slice()方法
arrayObject.slice(start,end)
返回一个新数组,包含从start到end(不包含此元素)的arrayObject中元素。该方法不修改原数组,而是返回一个新数组。
var arr =["a","b","c","d","e"]; var arr1=arr.slice(2,4); console.log(arr1); //"c,d" var arr2=arr.slice(0); console.log(arr2); //"a,b,c,d,e" arr2[2]="wang" console.log(arr); //"a,b,c,d,e" 与原数组不联动 console.log(arr2); //"a,b,wang,d,e"
参考地址:
https://blog.csdn.net/u010267996/article/details/61191975
https://www.cnblogs.com/matthew-2013/p/3524297.html
https://www.cnblogs.com/yuyifan/p/6204365.html