Что такое литеральная нотация массива в 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
использование индексов для добавления немного быстрее для [].
Comments