基本数据类型是传值,存放在栈中
引用数据类型(数组,对象和函数)是传址,值存放在堆中,栈中存放的是地址
var a = 10;
var b = a;
a = 20;
console.log(a, b); //20 10
var c = [10];
var d = c;
c.push(20); //传址
console.log(c, d); //[10, 20][(10, 20)];
var a = 10;
function foo(x) {
x = 20;
console.log(x); //20 传值
}
foo(a);
console.log(a); //10
var a = [10];
function foo(x) {
x.push(20); //将a的地址传给x,x改变,a也改变
console.log(x); //[10, 20]
}
foo(a);
console.log(a); //[10, 20]
var a = [10];
function foo(x) {
x.push(20);
console.log(x); //[10, 20]
x = []; //重新赋值,x的地址已经改变了,和a没有关系了
console.log(x); //[]
}
foo(a);
console.log(a); //[10, 20]