今天碰到了一个引用赋址的问题
var a = [1,2];
var b = a;
b[0] = 3;
alert(a) //3,2
这时候改变变量b,a的值跟着也变了,这是因为js的数组和对象、函数都是通过引用来赋值的;number和字符串是按照普通的方式赋值。
解决方法
1. var a = [1,2];
var b = a.slice(0);
b[0] = 3;
alert(a) //1,2
2. var a = [1,2];
var b = a.concat(0);
对象中
var a={age:22};
var b=a;
alert(b.age); //这是22
b.age=23;
alert(a.age); //但这是23
基本类型访问的是栈,引用类型访问的是堆,引用类型的地址也在栈内。