web-dev-qa-db-ja.com

var x = new Array();の何が問題になっていますか。

JSLintでは、次のように警告しています。

var x = new Array();

(これは実際の変数名ではありません)

var result = [];

最初の構文の何が問題になっていますか?提案の背後にある理由は何ですか?

38
Chris S

Crockfordはnew が好きではありません。したがって、 JSLintは、可能な場合は回避することを期待しています 。また、new...を使用せずに新しい配列オブジェクトを作成することもできます。

26
Shog9

JavaScriptでArrayの値を実際にオーバーライドできるため、new Array()を使用するよりも[]を使用する方が安全です。

Array = function() { };

var x = new Array();
// x is now an Object instead of an Array.

言い換えれば、[]は明確です。

70
Dan Lew

ブラウザや環境に応じて、使用している目的や目的に応じて、さまざまなパフォーマンスを得ることができるようです。

http://jsperf.com/new-array-vs-literal/11 ([1、.2] vs new Array(1、.2))この状況では、リテラルの方がはるかに高速です。

http://jsperf.com/new-array-vs-literal/7 (new Array(500000)vs [] .length(500000))newArrayはchrome v21このテストでは、実行内容に応じて約7%または30%)のようです。

7
Parris

どちらの形式でも問題はありませんが、通常は可能な限りリテラルが使用されています-

var s = ''はvars = new String()...よりもmore正しくありません。

5
kennebec

最初の構文自体には何の問題もありません。実際、 w3schools では、配列を作成する方法としてnew Array()がリストされています。問題は、これが「古い方法」であるということです。 「新しい方法」である_[]_は短く、_["foo", "bar"]_のように配列の値を初期化できます。ほとんどの開発者は、スタイルの点でnew Array()よりも_[]_を好みます。

2
Rudd Zwolinski