JS中的值是按值传递,还是按引用传递呢?

JS的基本类型,是按值传递的:
var a = 1;
function foo(x) {
x = 2;
}
foo(a);
console.log(a); // 仍为1, 未受x = 2赋值所影响

JS的引用类型按共享传递的:

在共享传递中对函数形参的赋值,不会影响实参的值。如下面例子中,不可以通过修改形参o的值,来修改obj的值。

var obj = {x : 1};
function foo(o) {
o.x = 3;
}
foo(obj);
console.log(obj.x); // 3, 被修改了!

var obj = {x : 1};
function foo(o) {
o = 100;
}
foo(obj);
console.log(obj.x); // 仍然是1, obj并未被修改为100.

原文:https://segmentfault.com/a/1190000005794070

你可能感兴趣的:(JS中的值是按值传递,还是按引用传递呢?)