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 に答える