意外的Javascript数组行为

时间:2019-06-28 14:56:12

标签: javascript

我将变量bubbleL1签名为1,但是为什么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]

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

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

bubbles

1 个答案:

答案 0 :(得分:3)

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