3 行目 ( test[0] = new Array();
) ではtest[0]
、新しい配列に設定します。
次の行 ( test[0] = "hello";
) では、文字列に設定します。
次に、test[0][0] = "world";
その文字列の最初のインデックスを「世界」に設定しようとします。
それはしようとしているようなものです"hello"[0] = "world";
。そんなことはできません。JavaScript の String オブジェクトは不変です。
var test = Array();
1次元構造を作成します...次のように:
0 - [_]
1 - [_]
2 - [_]
3 - [_]
4 - [_]
次に、最初のスポットを新しい配列に設定すると、2 番目の次元が与えられます (ただし、最初のスポットのみ)。
0 - [_][_][_][_][_]
1 - [_]
2 - [_]
3 - [_]
4 - [_]
次に、最初のスポットを に設定する"Hello"
と、そこに配置した配列が削除されます。
0 - ["Hello"]
1 - [_]
2 - [_]
3 - [_]
4 - [_]
この時点で、test[0]
です"Hello"
。Array
あなたが望む基準ではありません。文字列を設定することはできません[0]
。
[0]
のような文字列の設定を試みようとすると"Hello"
、実際には何も起こらないため、行test[0][0] = "world";
は実際には何もしていません!.
深く言えば、文字列は配列と同じです。配列操作は文字列にも適用できます。ブラウザが根底にある類似点を明らかにする範囲は、実際には一貫していません。FF、Chrome、および Safaritest[0][0]
では[0]
、"Hello"
. これらのブラウザでは、Hello は["H","e","l","l","o"]
. したがって、test[0][0]
= "Hello"[0]
= "H"
. IE は文字列をそのようには扱いません。そのため、一貫性のない動作が見られます。
これが役に立ったことを願っています!
編集: 他の誰かがすでに示唆しているようにcharAt(x)
、文字列から特定の位置にある文字を取得しようとするときに使用する関数は using です。