【问题标题】:Update existing variables when in JavaScript array在 JavaScript 数组中更新现有变量
【发布时间】:2018-10-20 01:52:33
【问题描述】:

在JavaScript中,当我将变量添加到数组中,然后更新数组中的每个元素时,为什么在控制台中输出时变量具有相同的值?

在下面,我希望所有变量都在控制台中显示777,但它们显示为 0。

当数组被记录时,[777,777,777] 会按预期显示。

var number1 = 0;
var number2 = 0;
var number3 = 0;

var numbers = [number1, number2, number3];

function updateNumbers() {
  var i;
  for (i = 0; i < numbers.length; i++) {
    numbers[i] = 777;

    console.log(numbers);

    console.log(number1);
    console.log(number2);
    console.log(number3);
  }

}

updateNumbers();

【问题讨论】:

  • 因为number1numbers[0]不是同一个变量。

标签: javascript arrays loops for-loop var


【解决方案1】:

当您创建数组时,您是按值传递变量,而不是对变量的引用。

var a = 1;
var b = 2;
var c = 3;
var test = [a, b, c];
console.log(test);

你可以做你想做的事(有点),但你需要使用对象。

var a = {
  value: 1
};
var b = {
  value: 2
};
var c = {
  value: 3
};

var test = [a, b, c];
// test[0] refers to a
// test[1] refers to b
// test[2] refers to c

function updateNumbers() {
  var i;
  for (i = 0; i < test.length; i++) {
    test[i].value = 777;
  }
}

updateNumbers();

console.log(test); // this wont output like in your example
console.log(a.value);
console.log(b.value);
console.log(c.value);

【讨论】:

    猜你喜欢
    • 2021-09-25
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多