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