This question already has answers here:
Is JavaScript a pass-by-reference or pass-by-value language?
(32个答案)
2年前关闭。
输出:
我无法理解上面的代码,为什么
为什么换行符不起作用?
谢谢
(32个答案)
2年前关闭。
var x = [1, 2, 3, 4, 5, 6];
function change1(y) {
y[0] = 7;
y[1] = 8;
y[2] = 9;
y[3] = 10;
y[4] = 11;
y[5] = 12;
}
change1(x);
console.log(x);
var z = [1, 2, 3, 4, 5, 6];
function change2(y) {
y = [7, 8, 9, 10, 11, 12];
}
change2(z);
console.log(z);
输出:
7,8,9,10,11,12 1,2,3,4,5,6
我无法理解上面的代码,为什么
change1()
函数可以更改传递的数组,而change2()
函数不能。为什么换行符不起作用?
谢谢
最佳答案
y[..] = ...
正在修改现有对象。任何拥有该对象引用的对象都可以看到该更改。y = ...
为本地y
变量分配一个全新的值,并丢弃先前分配的对象引用。该更改在函数外部不可见,因为其他任何人都无法访问y
变量。
07-24 09:30