1. ホーム
  2. javascript

[解決済み] JavaScriptの配列宣言で「Array()」と「[]」はどう違うのですか?

2022-03-18 01:34:49

質問

このように配列を宣言するのと、実際に何が違うのでしょうか。

var myArray = new Array();

そして

var myArray = [];

解決方法は?

差はありますが、その例では差はありません。

より冗長なメソッドを使用します。 new Array() コンストラクタに数値を渡すと、その長さの配列が得られます。

x = new Array(5);
alert(x.length); // 5

配列を作成するさまざまな方法を説明するため。

var a = [],            // these are the same
    b = new Array(),   // a and b are arrays with length 0

    c = ['foo', 'bar'],           // these are the same
    d = new Array('foo', 'bar'),  // c and d are arrays with 2 strings

    // these are different:
    e = [3]             // e.length == 1, e[0] == 3
    f = new Array(3),   // f.length == 3, f[0] == undefined

;

もう一つの違いは new Array() を使用すると、配列のサイズを設定することができ、それがスタックサイズに影響します。これは、スタックオーバーフローが発生している場合に有効です ( Array.pushとArray.unshiftの性能比較 これは、配列のサイズがスタックのサイズを超えたときに発生し、スタックを再作成する必要があります。そのため、ユースケースによっては、実際に new Array() なぜなら、オーバーフローを防ぐことができるからです。

で指摘されているように この答え , new Array(5) は実際には5つ追加されません。 undefined を配列に追加します。単に 5 個分のスペースが追加されるだけです。注意すべきは Array に依存することが難しくなります。 array.length を計算することができます。