【问题标题】:I'm confused working with JavaScript arrays [duplicate]我对使用 JavaScript 数组感到困惑 [重复]
【发布时间】:2018-06-25 00:51:14
【问题描述】:

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

为什么换行不起作用?

【问题讨论】:

  • 如果您正在写入控制台,换行符应该可以工作。由于您正在写入文档/浏览器,它会将其解释为 HTML - 尝试使用 html 换行符<br>

标签: javascript html


【解决方案1】:

y[..] = ... 正在修改一个现有对象。任何持有对该对象的引用的东西都可以看到这种变化。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多