Подтвердить что ты не робот

Что произойдет, если вы объявите массив без New в Javascript?

Возможный дубликат:
В чем разница между Array (1) и новым массивом (1) в JavaScript?

В javascript, как эти два разных?

var arr = Array();  
var arr2 = new Array();

Если они одинаковы в соответствии со стандартами JS, существуют ли браузеры, которые обрабатывают оба способа по-разному?

4b9b3361

Ответ 1

Согласно ECMA-262 edition 5.1:

15.4.1 Конструктор массива, вызываемый как функция

Когда Array вызывается как функция, а не как конструктор,  он создает и инициализирует новый объект Array.  Таким образом, вызов функции Array(...) эквивалентен созданию объекта  выражение new Array(...) с теми же аргументами.

Раздел 11.1.4 (он довольно длинный, поэтому я его не процитирую) также утверждает, что литерал массива напрямую соответствует вызову конструктора new Array(...).

Ответ 2

Я считаю, что второй - это просто правильное кодирование, но, однако, у Джареда есть хорошая точка, что большинство людей просто используют var arr = [];

В этом тесте для вашего вопроса: http://jsperf.com/array-vs-new-array

После 10 пробегов они составляют шею и шею, составляющую в среднем 65-80 миллионов опт в секунду. Я не вижу разницы в производительности между ними.

При этом я добавил var arr = []; к эталону, и он последовательно на 20-30% быстрее, чем два других, с частотой более 120 миллионов операций в секунду.