Что не так с 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() с точки зрения хорошего стиля.

Другие вопросы по тегам