javascript - 在 JavaScript 数组中更新现有变量
问题描述
在 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();
解决方案
创建数组时,您是按值传递变量,而不是对变量的引用。
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);
推荐阅读
- dart - 创建从上到下的幻灯片效果
- javascript - 使用 OpenLayers 5 + OpenWeatherMap 图层不会显示在底图上方
- php - 响应 PHP/JSON 的空数组
- java - 在 OneToMany 关系中删除父级后“无法删除或更新父行”
- mysql - 如何查看两列的组合是否在另一个表中?
- pandas - pd.DataFrame 问题:根据条件列表更改单元格中的值
- java - 在 for 循环中打印语句导致多个输出而不是一个输出,如何在不使用“return”的情况下解决此问题?
- python - Pandas 系列 str.extract 无法匹配 RegEx 模式
- r - Azure ML 和 r 脚本
- ruby-on-rails - 在 Active Record 中乘以列?