在第三行 ( test[0] = new Array();
),您设置test[0]
了一个新数组。
在下一行 ( test[0] = "hello";
) 中,将其设置为字符串。
然后test[0][0] = "world";
尝试将该字符串的第一个索引设置为“world”。
这就像尝试做的那样"hello"[0] = "world";
。你不能那样做。JavaScript 中的 String 对象是不可变的。
var test = Array();
制作一维结构......像这样:
0 - [_]
1 - [_]
2 - [_]
3 - [_]
4 - [_]
然后,将第一个点设置为一个新数组为其提供了第二个维度(但仅在第一个点中)。
0 - [_][_][_][_][_]
1 - [_]
2 - [_]
3 - [_]
4 - [_]
然后,将第一个位置设置为"Hello"
摆脱您放置在那里的阵列。
0 - ["Hello"]
1 - [_]
2 - [_]
3 - [_]
4 - [_]
此时,test[0]
是"Hello"
。不是Array
您想要的标准。你不能设置[0]
一个字符串。
当您要求尝试设置[0]
String like"Hello"
时,实际上什么也没发生,因此该行test[0][0] = "world";
根本没有做任何事情!
在内心深处,字符串与数组相同。数组操作甚至可以应用于字符串。浏览器暴露潜在相似性的程度并不一致。在 FF、Chrome 和 Safari 中,您将test[0][0]
获得[0]
. "Hello"
在那些浏览器中,Hello 有点像["H","e","l","l","o"]
. 所以,test[0][0]
= "Hello"[0]
= "H"
。IE 不会那样处理字符串。这就是为什么您会看到不一致的行为。
希望这有帮助!
编辑:正如其他人已经建议的那样, usingcharAt(x)
是您在尝试从字符串中提取特定位置的字符时应该使用的功能。