这与Javascript中的数组有关,我试图在复杂的逻辑中使用数组。
请考虑以下代码:
a['a1'] = 'AJA'
我们知道,这与a.a1 = 'AJA'
相同(前提是给出了正确的定义)。
因此,如果我们继续解释这一点:
console.log(a.a1[0])
console.log(a.a1[1])
console.log(a.a1[2])
console.log(a.a1)
它记录:
A
J
A
AJA
现在,我所需要的只是在第 4 个位置分配一个新角色。
当我尝试a[a1][3] = 'Y'
或a.a1[3] = 'Y'
然后尝试console.log(a.a1)
时,它仍然显示AJA
而不是AJAY
。
我知道我们可以使用字符串连接来做到这一点,即 a['a1'] = a['a1'] + 'Y'
并完成此操作。
但是为什么第一种方法不起作用呢?还有什么其他方法可以做到这一点?
字符串是不可变的。这意味着,如果您创建一个字符串,则无法再修改它。所以你的a1
对第四个字符一无所知。
您可以看到此示例。我尝试更改已创建字符串的第二个字符,但它将不再更改。
let a = {};
a['a1'] = 'AJA';
a.a1[1] = 'A';
console.log(a.a1);
有关更多信息,您可以看到 MDN 文档
据我所知,a[a1][3] 或 a.a1[3] 是一个字符串变量,您可以将其视为:
变量 s = 'ss';
当你计算 s[0] 时,你会得到一个字符串值。因此,当您将任何字符串值分配给 s 时,您不会得到 'ss' + anyvalue 而是 anyvalue。:)