您的位置:首页 > Web前端 > JavaScript

JavaScript 的引用赋值与传值赋值

2018-02-07 12:24 127 查看
<script>
var arr1=[1,2];
var arr2=arr1;
arr2.push(3);
console.log('arr1为:'+arr1);
console.log('arr2为:'+arr2);
var a=2;
var b=a;
b+=2;
console.log('a为:'+a);
console.log('b为:'+b);
</script>

输出结果为:

arr1为:1,2,3
arr2为:1,2,3
a为:2
b为:4

为什么arr1和arr2会相同,而a和b又不同呢?

原因是:number,string类型都是基本类型,而基本类型存放在栈区,访问时按值访问,赋值是按照普通方式赋值;对象和数组是通过引用来赋值的,所以改变arr1的同时arr2也会跟着改变;
那如何避免上述数组引用赋值的情况呢?可以采用如下方法:
//数组(循环赋值)
var arr3=[];
for(var i=0;i<arr1.length;i++){
arr3[i]=arr1[i];
}
arr1.push(3);
console.log('arr3:'+arr3);
console.log('arr1:'+arr1);
结果为:
arr3为:1,2
arr1为:1,2,3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: