私がいくつかのページから読んだ密な配列の説明は、互いに矛盾しているようです。私はそれが何であるかを理解する助けをしたいと思います。密集配列とは正確には何ですか?
いくつかのリンク(search result 1、search result 2)は、単にアレイであることを示唆しているものの:アレイの
- 要素が特定の値であることが知られています。
- は、初期化時に配列に割り当てられます。
JavaScript配列が密集していることがあります。
ここまではすべて意味があります。 JavaScript Guide on the Mozilla Developer Network (MDN)から取ら
しかし、この文は言う:配列の長さは、いつでも変更することができますので
、およびデータは、アレイ内の非連続の場所に保存することができ、JavaScriptの配列は ではありません密集していることが保証されています;これはプログラマがどのようにそれらを使用するために を選択するかに依存します。一般に、これらは便利な特性です。 これらの機能がご使用に適していない場合は、 型付き配列の使用を検討してください。
これは今私を混乱させる。私の質問は次のとおりです:
MDNページのステートメントは、JavaScript配列が密であることが保証されていないと言っていますか?初期化時に1つまたは複数の要素がundefined
であるため、次の配列が密な配列でない場合は、上にリストしたリンクがJavaScript配列が実際に密であることを示すように見えるのはなぜですか?
var array = new Array(1, , 3,); // [1, undefined, 3, undefined]
どのように配列が初期化されたかは無関係です。配列*の状態は重要です。 'var arr = [1,2,3,4]'は密な配列を作成しますが、次に 'arr [ 20] = 20'になりました。 – nnnnnn
@nnnnnnありがとう、私はそれを得る。すべての要素が密であるという密かな意味は、価値を持ち、したがって記憶を取ります。 –
ところで、これは無効な構文です: 'new Array(1、、3、)'。 '[1、、3、]'と混同しているかもしれません。 –