Что такое литеральная нотация массива в javascript и когда вы должны ее использовать?

JSLint дает мне эту ошибку:

проблема в строке 11 символ 33: используйте литеральную нотацию массива [].

var myArray = new Array();

Что такое литеральная нотация массива и почему она хочет, чтобы я использовал ее вместо этого?

здесь видно, что new Array(); должно работать нормально... я что-то упускаю?

4 ответов


буквенная нотация массива-это то, где вы определяете новый массив, используя только пустые скобки. В вашем примере:

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

ссылка: в чем разница между "Array()" и "[]" при объявлении массива JavaScript?


Читайте также: что случилось с var x = new Array ();

помимо аргумента Крокфорда, я считаю, что это также связано с тем, что другие языки имеют аналогичные структуры данных, которые используют тот же синтаксис; например,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, либо)


помимо аргумента Крокфорда, jsPerf говорит, что это быстрее. http://jsperf.com/new-vs-literal-array-declaration


посмотрев на @ecMode jsperf, я сделал несколько дополнительных тестов.

при использовании push для добавления в массив new Array () значительно быстрее в Chrome:

http://jsperf.com/new-vs-literal-array-declaration/2

использование индексов для добавления немного быстрее для [].