基本数据类型传递方式
由于js中存在复杂类型和基本类型,对于基本类型而言,是按值传递的
var a = 1;
function test(x) {
x = 10;
console.log(x);
}
test(a); // 10
console.log(a); // 1
虽然在函数 test
中 a
被修改,并没有有影响到 外部 a
的值,基本类型是按值传递的.
复杂类型按引用传递?
我们将外部 a
作为⼀个对象传⼊ test
函数.
var a = { a: 1, b: 2 };
function test(x) {
x.a = 10;
console.log(x);
}
test(a); // { a: 10, b: 2 }
console.log(a); // { a: 10, b: 2 }
可以看到,在函数体内被修改的a
对象也同时影响到了外部的a
对象,可⻅复杂类型是按引⽤传递的.
可是如果再做⼀个实验:
var a = {
a: 1,
b: 2
};
function test(x) {
x = 10;
console.log(x);
}
test(a); // 10
console.log(a); // { a: 10, b: 2 }
外部的 a
并没有被修改,如果是按引⽤传递的话,由于共享同⼀个堆内存, a
在外部也会表现为 10
才对. 此时的复杂类型 同时表现出了按值传递
和按引⽤传递
的特性
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。