首页 > 解决方案 > 意外的 Javascript 数组行为

问题描述

我将变量签名bubbleL11,但为什么bubbles列表中的第一个变量bubbleL1仍然显示undefined?我知道这可能是一个愚蠢的问题,但我真的不知道为什么。

    let bubbleL1, bubbleL2, bubbleL3, bubbleR1, bubbleR2, bubbleR3;
    let bubbles = [bubbleL1, bubbleL2, bubbleL3, bubbleR1, bubbleR2, bubbleR3];

    bubbleL1 = 1;
    console.log(bubbleL1) // 1
    console.log(bubbles) // [undefined, undefined, undefined, undefined, undefined, undefined]

我想要的是一个列表,其中每个项目都有一个特定的名称(出于声明的原因,我真的不只是使用气泡 [0]、气泡 [1]...)

假设我们有一个名为 的列表bubbles,还有六个变量名为bubbleL1, bubbleL2, bubbleL3, bubbleR1, bubbleR2, bubbleR3。我想将所有这六个变量都放入bubbles列表中,以便稍后我可以为列表中的每个变量分配值,如下所示:

bubbles.forEach((bubble) => {
  bubble = "something";
})

标签: javascript

解决方案


bubbleL1是原语,因此按值复制。

let x = 3;

let sum = x;
sum = 3 + 5;

console.log(x); // 3

另一方面,对象和数组将表现出您预期的按引用复制行为:

let x = {a: 3};

let sum = x;
sum.a = 3 + 5;

console.log(x.a); // 8


推荐阅读