值传递和地址传递

一个陷阱,引发一次深刻的思考,代码如下:

1
2
3
4
5
6
7
8
9
10
11
var a = 11111;
var b = {
pro: "test"
}
function fn(a,b){
a = 2222;
b.pro = "zhenn";
}
fn(a,b);
console.log(a); // 11111
console.log(b); // b.pro = "zhenn"

在JavaScript中,除了Object,Array是地址引用,其他数据类型,诸如Number、Boolean、String等都是值引用,这就是从陷阱中挖出的东西,同一个坑不能跳进去两次啊!杯具…