Что произойдет, если вы объявите массив без New в Javascript?
Возможный дубликат:
В чем разница между Array (1) и новым массивом (1) в JavaScript?
В javascript, как эти два разных?
var arr = Array();
var arr2 = new Array();
Если они одинаковы в соответствии со стандартами JS, существуют ли браузеры, которые обрабатывают оба способа по-разному?
Ответы
Ответ 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 миллионов операций в секунду.