JSLintは私にこのエラーを与えています:
行11文字33の問題:配列リテラル表記[]を使用します。
_var myArray = new Array();
_
配列リテラル表記とは何ですか?なぜ代わりに使用したいのですか?
new Array();
が正常に動作することをここに示しています...私が見逃しているものがありますか
配列リテラル表記は、空の括弧を使用して新しい配列を定義する場所です。あなたの例では:
var myArray = [];
それは配列を定義する「新しい」方法であり、私はそれがより短く/きれいだと思います。
以下の例は、それらの違いを説明しています。
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
参照: var x = new Array();の何が問題なのか
Crockfordの議論とは別に、他の言語にも同じ構文を使用する同様のデータ構造があるという事実によるものだと思います。たとえば、 Pythonにはリストと辞書があります ;次の例を参照してください。
// this is a Python list
a = [66.25, 333, 333, 1, 1234.5]
// this is a Python dictionary
tel = {'jack': 4098, 'sape': 4139}
Pythonも文法的に正しいJavascriptですか?(はい、終了セミコロンがありませんが、Javascriptには必要ありません)
したがって、プログラミングで一般的なパラダイムを再利用することで、必要のないものを再学習する必要がなくなります。
Crockfordの議論は別として、jsPerfはそれがより速いと言います。 http://jsperf.com/new-vs-literal-array-declaration
@ecMode jsperfを見た後、さらにテストを行いました。
プッシュを使用して配列に追加する場合、Chromeでは新しいArray()がかなり高速です。
http://jsperf.com/new-vs-literal-array-declaration/2
[]の場合、インデックスを使用して追加する方が若干高速です。