Что не так с var x = new Array (); - PullRequest
37 голосов
/ 20 мая 2009

В JSLint он предупреждает, что

var x = new Array();

(это не настоящее имя переменной) должно быть

var result = [];

Что не так с 1-м синтаксисом? В чем причина этого предложения?

Ответы [ 5 ]

69 голосов
/ 20 мая 2009

Использовать [] безопаснее, чем new Array(), потому что вы можете переопределить значение Array в JavaScript:

Array = function() { };

var x = new Array();
// x is now an Object instead of an Array.

Другими словами, [] однозначно.

26 голосов
/ 20 мая 2009

Крокфорду не нравится new. Поэтому JSLint ожидает, что вы по возможности избежите этого И создание нового объекта массива возможно без использования new ....

7 голосов
/ 09 августа 2012

Похоже, что вы можете получить различную производительность в зависимости от того, что вы используете и для какой цели, в зависимости от браузера или среды:

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%) в зависимости от того, что вы делаете.

5 голосов
/ 20 мая 2009

Нет ничего плохого в любой форме, но вы обычно видите литералы, используемые везде, где это возможно.

var s = '' не больше правильно, чем var s = new String () ....

2 голосов
/ 20 мая 2009

Нет ничего плохого в первом синтаксисе как таковом. Фактически, в w3schools в качестве способа создания массива указывается new Array(). Проблема в том, что это «старый путь». «Новый путь», [], короче и позволяет инициализировать значения в массиве, как в ["foo", "bar"]. Большинство разработчиков предпочитают от [] до new Array() с точки зрения хорошего стиля.

...