Что не так с var x = new Array();
В JSLint он предупреждает, что
var x = new Array();
(Это не настоящее имя переменной) должно быть
var result = [];
Что не так с 1-м синтаксисом? В чем причина этого предложения?
5 ответов
Крокфорд не любит 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] vs new Array (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()
с точки зрения хорошего стиля.