我在使用JavaScript 数组时感到困惑。

13 浏览
0 Comments

我在使用JavaScript 数组时感到困惑。

这个问题已经有了答案

JavaScript是按引用传递还是按值传递语言?

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()函数不能。

以及为什么换行符不起作用?

admin 更改状态以发布 2023年5月24日
0
0 Comments

y[..] = ...正在修改一个已存在的对象。这种改变对那些持有该对象引用的任何东西都是可见的。

y = ...给本地变量y赋一个全新的值,并且丢弃了之前分配的对象引用。这种改变对函数外部不可见,因为没有其他东西可以访问变量y

0