しましょうarr = [1,2,3,4]
。arr[x]
どこに設定するとx >= arr.length
、 にarr.length
なりx + 1
ます。
これは Firefox と Chrome で発生します。2 つの質問があります。
- これは定義された動作ですか? (ソースは大歓迎です)
- これは推奨されていますか?
ありがとう!
しましょうarr = [1,2,3,4]
。arr[x]
どこに設定するとx >= arr.length
、 にarr.length
なりx + 1
ます。
これは Firefox と Chrome で発生します。2 つの質問があります。
ありがとう!
これは定義された動作ですか?
はい、仕様の §15.4 を参照してください。
これは推奨されていますか?
それは、あなたが望む最終結果に完全に依存します。やっても問題ありません。
次のように構築された配列をよく見かけます。
var a = [];
for (/*...some loop over things...*/) {
a[a.length] = /* ...something to put on the array... */;
}
...これは次とまったく同じです:
var a = [];
for (/*...some loop over things...*/) {
a.push(/* ...something to put on the array... */);
}
一部の JavaScript エンジンはa[a.length] = ...
よりも高速に処理しますa.push(...)
(その他はその逆です)。
JavaScript 配列はsparseであることに注意してください。配列にはギャップが存在する可能性があり、これがこの動作の理由の一部です。(実際、JavaScript 配列は実際にはまったく配列ではありません。) プロパティに assign を割り当てることができlength
ます。
配列インデックスはゼロから始まります。
arr[0] == 1
arr[1] == 2
arr[2] == 3
arr[3] == 4
を設定arr[4]
すると、5番目の要素になります。
確かに、これは JavaScript で行うことができます。
undefined
.