Что такое обозначение литерала массива в JavaScript и когда его следует использовать?

StackOverflow https://stackoverflow.com/questions/1094723

Вопрос

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

Ссылка: В чем разница между «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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top