1

考虑这个例子:

var a, b, c, d;
a = new Array(1,2,3);
b = "dog";
c = new Array(42, "cat");
d = a.concat(b, c);
document.write(d); // outputs 1, 2, 3, dog, 42, cat - makes sense

我不明白的是:

alert(b[0]); // d
alert(b[1]); // o
.. etc.

我知道concat()返回一个新的数组对象,但是为什么它将字符串“dog”分割成单独的数组元素?我本来希望b[0]返回“狗”并b[1]返回未定义的。对不起,如果这是一个愚蠢的问题:/

4

2 回答 2

3

这与方法无关concatb在调用中使用变量作为参数concat不会改变它。

您正在使用括号语法来访问字符串的项目,这(在现代浏览器中)与charAt方法相同。

于 2013-08-31T22:48:40.013 回答
2

方括号运算符[]不仅适用于数组。对于数组,它确实返回索引处的元素,但对于字符串,它被实现为返回charAt. 请参阅http://blog.vjeux.com/2009/javascript/dangerous-bracket-notation-for-strings.html了解使用它的潜在陷阱。

于 2013-08-31T22:48:28.303 回答