JavaScript参数按值传递

定义

ECMAScript中所有函数的参数都是按值传递的。

案例一

1
2
3
4
5
6
7
const value = 1;
function test(v) {
v = 2;
console.log(v); // 2
}
test(value);
console.log(value); // 1

修改前:

栈内存 堆内存
value 1
v 1

修改后:

栈内存 堆内存
value 1
v 2

案例二

1
2
3
4
5
6
7
8
9
const obj = {
value: 1
};
function test(o) {
o.value = 2;
console.log(o.value); //2
}
test(obj);
console.log(obj.value); // 2

修改前:

栈内存 堆内存
obj,o 指针地址 {value: 1}

修改后:

栈内存 堆内存
obj,o 指针地址 {value: 2}

案例三

1
2
3
4
5
6
7
8
9
const obj = {
value: 1
};
function test(o) {
o = 2;
console.log(o); //2
}
test(obj);
console.log(obj.value); // 1

修改前:

栈内存 堆内存
obj,o 指针地址 {value: 1}

修改后:

栈内存 堆内存
obj,o 指针地址 {value: 1}
o 2