LoginSignup
13
13

More than 5 years have passed since last update.

JavaScriptの配列の生成方法の違い 〜リテラル `[]` とコンストラクタ `new Array()` 〜

Last updated at Posted at 2016-03-11

先に結論

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

余談 〜オブジェクトの場合〜

オブジェクトのリテラル [] とコンストラクタ 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

13
13
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13