JavaScriptの配列の生成方法の違い 〜リテラル `[]` とコンストラクタ `new Array()` 〜
先に結論
2要素以上の空配列を生成したい場合以外では、リテラルのほうが良さそう
サンプル
コンストラクタ
var a = new Array(); //要素数0の空配列 []
var b = new Array(2); //要素数2の空配列 [ , ]
var c = new Array(3.14); //runtime error
var d = new Array(1, 'constructor'); //[1,'constructor']
リテラル
var a = []; //要素数0の空配列 []
var b = [2]; //[2]
var c = [3.14]; //[3.14]
var d = [2, 'literal']; //[2, 'literal']
比較
- コンストラクタでは要素数を指定した空配列の生成が可能
- コンストラクタでは数値データ1つのみの配列の生成は出来ない
使用するエンジンや実行環境によるものの、リテラルのほうが早い1
Array
をユーザが再定義している場合コンストラクタは使えなくなる2
MDNでリテラルのほうを積極的に使用している
JavaScript: The Good Partsでリテラルの使用が勧められているようだ3
余談 〜オブジェクトの場合〜
var a = new Array(); //要素数0の空配列 []
var b = new Array(2); //要素数2の空配列 [ , ]
var c = new Array(3.14); //runtime error
var d = new Array(1, 'constructor'); //[1,'constructor']
var a = []; //要素数0の空配列 []
var b = [2]; //[2]
var c = [3.14]; //[3.14]
var d = [2, 'literal']; //[2, 'literal']
- コンストラクタでは要素数を指定した空配列の生成が可能
- コンストラクタでは数値データ1つのみの配列の生成は出来ない
使用するエンジンや実行環境によるものの、リテラルのほうが早い1
Array
をユーザが再定義している場合コンストラクタは使えなくなる2MDNでリテラルのほうを積極的に使用している
JavaScript: The Good Partsでリテラルの使用が勧められているようだ3
余談 〜オブジェクトの場合〜
オブジェクトのリテラル []
とコンストラクタ new Object()
についても同様に、
- リテラルのほうが早い1
- コンストラクタが再定義されてしまう懸念がある
- JavaScript: The Good Partsでリテラルの使用が勧められているよう3
なので、リテラルで良さそう。
Object - JavaScript | MDN
javascript - What is the difference between new Object()
and object literal notation? - Stack Overflow
-
リテラル, コンストラクタ, それぞれのオブジェクト生成方法のプロファイリングをやってみた - きたけーのアウトプット ↩
-
Arrayは予約語ではないので再定義できてしまう 予約語 - JavaScript | MDN ↩
-
「new Objectとnew Arrayの利用も避けるべきである。代わりに {} と [] を使えばよい」 via [JavaScript][読書] 『JavaScript:The Good Parts ―「良いパーツ」 - itouhiroメモ ↩
Author And Source
この問題について(JavaScriptの配列の生成方法の違い 〜リテラル `[]` とコンストラクタ `new Array()` 〜), 我々は、より多くの情報をここで見つけました https://qiita.com/macoril/items/1366c7d6e5bf1347e91b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .