在第三行 ( 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)是您在尝试从字符串中提取特定位置的字符时应该使用的功能。