1. ホーム
  2. javascript

[解決済み] JavaScriptで配列の長さを初期化する方法は?

2022-03-25 21:14:18

質問

私が読んだJavaScriptの配列に関するチュートリアルのほとんど( w3schools デブグル を使用して Array コンストラクタに整数を渡すと、特定の長さの配列を初期化できることを示唆しています)。 var test = new Array(4); の構文があります。

この構文を自分のjsファイルで自由に使った後、ファイルの1つを jsLint というメッセージが表示され、パニックになりました。

<ブロッククオート

エラーです。1 行目の文字 22 に問題があります: ')' を期待しましたが、代わりに '4' が表示されました。
var test = new Array(4);
1行目23文字目に問題あり:';'を期待したが、')'と表示された。
var test = new Array(4);
1行目23文字目に問題あり:識別子を期待したが、代わりに')'が表示された。

一通り読んだら jsLintによる動作の説明 は、jsLint ではあまり好きではないようです。 new Array() の構文が好きで、代わりに [] は、配列の宣言時に使用します。

そこで、いくつか質問があります。

まず、なぜ? を使うことで、何かリスクがあるのでしょうか? new Array() の構文で代用できますか? 注意すべきブラウザの非互換性はありますか?

次に、角括弧構文に切り替えた場合、配列の宣言とその長さの設定をすべて1行で行う方法はないでしょうか、それともこのようにしなければならないでしょうか。

var test = [];
test.length = 4;

解決方法は?

  1. なぜ長さを初期化するのですか?理論的には必要ありません。を使用するテストはすべて、長さを初期化する必要があるからです。 length を使用して配列が空かどうかを調べると、 配列は空ではないと報告されます。
    一部 テスト は、大きな配列の初期長を設定することで できる しかし、その性能はブラウザによって異なるようです。

  2. jsLint は new Array() コンストラクタがあいまいだからです。

    new Array(4);
    
    

    空の配列を作成します 長さ 4. しかし

    new Array('4');
    
    

    は配列を作成します。 の値を含む '4' .

コメントについて。JSでは、配列の長さを初期化する必要はありません。動的に増えていくからです。長さを変数に格納するだけでよいのです。

var data = [];
var length = 5; // user defined length

for(var i = 0; i < length; i++) {
    data.push(createSomeObject());
}