function changeStuff(a, b, c)
{
a = a * 10;
b.item = "changed";
c = {item: "changed"};
}
var num = 10;
var obj1 = {item: "unchanged"};
var obj2 = {item: "unchanged"};
changeStuff(num, obj1, obj2);
console.log(num);
console.log(obj1.item);
console.log(obj2.item);
//结果
//10
//changed
//unchanged
如果您更改参数本身(如 num 和 obj2),则不会影响输入参数的项目。但是,如果您更改参数的内部结构,它将向上传播(与 obj1 一样)。
参考:https://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language?lq=1