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
相关文章推荐
- Javascript的赋值是引用or复制,及参数传递
- JavaScript所有的对象赋值和函数参数都是引用
- javascript对象引用与赋值
- javascript中给变量赋值,是引用还是复制?
- 转载:写了10年Javascript未必全了解的连续赋值运算 --> 说明了JS中变量是引用
- javascript引用和赋值
- JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
- javascript引用赋值(地址传值)用法实例
- JavaScript 演练(7). 赋值与引用
- javascript对象引用与赋值
- <转> Javascript的赋值是引用or复制,及参数传递
- javascript 引用类型 赋值
- JavaScript对象引用与赋值实例详解
- Javascript小知识点(七):数据类型赋值,浅拷贝,深拷贝(数组值传递还是引用传递)
- 谈一谈我对javascript 中赋值是引用还是复制的理解
- javascript引用赋值(地址传值)用法实例
- Javascript的赋值是引用or复制,及参数传递
- JavaScript中的基本类型和引用类型的赋值问题和传参问题
- java中对象的引用与赋值
- 论文引用 - 1. JavaScript论文应用