[js中数组的引用的例子]js中数组的引用的例子

更新时间:2020-04-25    来源:php基础    手机版     字体:

【www.bbyears.com--php基础】

js中数组的引用应该算是基础知识了:

var arr = [1,2,3];
var arr2 = arr;
arr2[0] = 5;  //此时arr和arr2都变成了[5,2,3]

我们怎么斩断这种引用呢?我所知道的有两个方法:

1.数组的slice方法

var arr = [1,2,3];
var arr2 = arr.slice();
arr2[0] = 5;  //此时arr为[1,2,3]  arr2为[5,2,3] slice方法相当于复制出来一个新数组

2.数组的concat方法

var arr = [1,2,3];
var arr2 = arr.concat();
arr2[0] = 5;  //此时arr为[1,2,3]  arr2为[5,2,3] 和slice方法一样,concat方法也相当于复制出来一个新数组

值得注意的是下面的问题,函数传参的方法(这个是这篇博文的重点)

var a = [1,2];
var b = [5,6];
function change (x){
    x[0]=3;
    x=b;
    x[1]=9;
}
change(a);  //此时a的值为[3,2],不是[5,6],也不是[5,9]

也就是说在函数里面可以修改数组参数的值,却不能修改数组的引用,当改变了数组参数的引用之后,就不会对原数组产生任何影响了,这就是引用关系和函数在一起使用的时候要注意的。

结论:js数组是引用类型,它只允许通过索引来获取或改变数组的值 引用类型的东西都是不能通过(它赋值过的外部变量)所改变的  也就是(它赋值过的外部变量)这个值改变了原数组不会有任何变化

谁能用指针呀 什么的给解释下?

<script type="text/javascript" src="/jquery.js"></script>
<script>
    //结论:数组对数组是引用类型,数组对变量是值类型
var a=[1,2,3,4];
    //例子1
var b=a;
    alert(a);//1234
    alert(b);//1234
//例子2
var c=a;
    c[3]=5;
    alert(c);//1235
    alert(a);//1235
//例子3
var d=a[1];
    d=10;
    alert(a);//1234
</script>

本文来源:http://www.bbyears.com/jiaocheng/93077.html