1、赋值
var a = 1;var b = a; //赋的是a的复制值b ++;alert(a); //"1" b的修改不影响a2、引用
var a = [1];var b = a;//赋的是a的引用 b[0] ++;alert(a); //"2" b的修改对a也有效 不过当然b = [2];这种修改对a是没用的。。。。。。起到引用作用又不影响原数组的方法
方法一:用jq的$.extend方法
<script type="text/javascript">var a=[1];var b;b= $.extend(true,{},a)b[0]++;alert(b[0]); </script>方法二:用数组的concat方法
<script type="text/javascript">var a=[1];var b=a.concat();b[0]++;alert(a[0]); </script>方法三:用函数传参的方法
传值的传递:传给函数的是数值的一个复制,函数中对其的修改外部不可见var a = 1;var b = 2;function change(a,b) { var c = a; a = b;//用新引用覆盖 b = c; alert(a); //"2"alert(b); //"1"}change(a,b);alert(a); //"1"alert(b); //"2"传址的传递:传给函数的是数值的一个引用,,函数中对其属性的修改外部可见,但用新引用覆盖其则在外部不可见,比如var a = [1, 2, 3];var b = [5, 6];function change(a,b) { a[0] = 4; //对其属性的修改外部可见var c = a; a = b;//用新引用覆盖 b = c; alert(a); //"5,6"alert(b); //"4,2,3"}change(a,b);alert(a); //"4,2,3"alert(b);//"5,6"从结果可以看出a和b并没有互换 因为用新引用覆盖在外部不可见 这个很自然 因为函数只是拿到了引用 并没有权力更改引用
一个人去旅行,而且是去故乡的山水间徜徉。