В JSLint он предупреждает, что
var x = new Array();
(это не настоящее имя переменной) должно быть
var result = [];
Что не так с 1-м синтаксисом? В чем причина этого предложения?
Использовать [] безопаснее, чем new Array(), потому что вы можете переопределить значение Array в JavaScript:
[]
new Array()
Array
Array = function() { }; var x = new Array(); // x is now an Object instead of an Array.
Другими словами, [] однозначно.
Крокфорду не нравится new. Поэтому JSLint ожидает, что вы по возможности избежите этого И создание нового объекта массива возможно без использования new ....
new
Похоже, что вы можете получить различную производительность в зависимости от того, что вы используете и для какой цели, в зависимости от браузера или среды:
http://jsperf.com/new-array-vs-literal/11 ([1, .2] vs new Array (1, .2)) в этом случае литерал работает намного быстрее.
http://jsperf.com/new-array-vs-literal/7 (новый массив (500000) против []. Длина (500000)) новый массив быстрее в chrome v21, кажется, для этого теста примерно на 7% или 30%) в зависимости от того, что вы делаете.
Нет ничего плохого в любой форме, но вы обычно видите литералы, используемые везде, где это возможно.
var s = '' не больше правильно, чем var s = new String () ....
Нет ничего плохого в первом синтаксисе как таковом. Фактически, в w3schools в качестве способа создания массива указывается new Array(). Проблема в том, что это «старый путь». «Новый путь», [], короче и позволяет инициализировать значения в массиве, как в ["foo", "bar"]. Большинство разработчиков предпочитают от [] до new Array() с точки зрения хорошего стиля.
["foo", "bar"]