这与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'
并完成此任务。
但为什么第一种方法不起作用呢?通过其他方式可以做到这一点?
答案 0 :(得分:3)
字符串是不可变的。这意味着如果您创建一个字符串,则无法再修改它。所以你的a1
对第四个角色一无所知。
您可以看到此示例。我尝试更改已创建字符串的第二个字符,但不会再更改。
let a = {};
a['a1'] = 'AJA';
a.a1[1] = 'A';
console.log(a.a1);
有关详情,您可以看到 MDN Documentation
答案 1 :(得分:-2)
我知道[a1] [3]或a.a1 [3]是一个字符串变量,你可以把它当作:
var s ='ss';
当您评估s [0]时,您将获得一个字符串值。因此,当您为s指定任何字符串值时,您将不会获得'ss'+ anyvalue而是anyvalue。 :)