13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

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

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

  1. リテラル, コンストラクタ, それぞれのオブジェクト生成方法のプロファイリングをやってみた - きたけーのアウトプット 2

  2. Arrayは予約語ではないので再定義できてしまう 予約語 - JavaScript | MDN

  3. 「new Objectとnew Arrayの利用も避けるべきである。代わりに {} と [] を使えばよい」 via [JavaScript][読書] 『JavaScript:The Good Parts ―「良いパーツ」 - itouhiroメモ 2

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?