Когда мне нужно объявить новый массив, я использую эту запись
var arr = new Array();
Но при тестировании в Интернете, например, на jsbin , появляется предупреждение «Использовать буквенное обозначение массива []».
Я не нашел причины избегать использования конструктора. В каком-то смысле менее эффективно, чем использовать []
? Или это плохая практика?
Есть ли веская причина для использования var arr = [];
вместо var arr = new Array();
?
javascript
Naigel
источник
источник
Ответы:
В основном люди используют,
var a = []
потому что так говорит Дуглас Крокфорд .Его причины включают не интуитивное и противоречивое поведение
new Array()
:Обратите внимание, что невозможно
new Array()
создать массив с одним предварительно заданным числовым элементом!Использование
[]
на самом деле более эффективно и безопасно ! Можно переписатьArray
конструктор и заставить его делать странные вещи, но вы не можете переписать поведение[]
.Лично я всегда использую
[]
синтаксис и аналогично всегда использую{}
синтаксис вместоnew Object()
.источник
[]
вызывает внутренний конструктор, а не какое-либо значениеArray.constructor
, полученное в то время.Array
конструктора: jsperf.com/new-arrayОдно существенное отличие состоит в том,
[]
что всегда будет создаваться экземпляр нового массива, тогда как онnew Array
может быть угнан для создания другого объекта .В моем примере кода я сохранил
Array
функцию скрытой от остальной области документа, однако, более вероятно, что если вы когда-нибудь столкнетесь с такой проблемой, код не останется в хорошем закрытии и будет вероятно, будет трудно найти.Отказ от ответственности : это не очень хорошая идея, чтобы захватить
Array
конструктор.источник
для удобства использования используйте
[]
Литерал массива более предсказуем, поскольку большинство разработчиков используют его. Большая часть использования массива будет использовать литерал, и есть смысл в том, чтобы ваш код соответствовал тому, что используют другие разработчики.
для пустых массивов используйте
[]
Как показано здесь , использование литерала для пустых и пары известных элементов намного проще, чем конструктор Array.
для массива известного размера используйте
new Array(size)
Если размер известен, то использование конструктора Array значительно повышает производительность. Однако это также означает, что вам приходится иметь дело с массивом, который уже имеет неопределенное значение, заполняющее все его значения.
Как показано здесь
Это также работает для очень маленьких массивов .
источник
Нет, на самом деле нет причин использовать одну нотацию над другой для пустых массивов.
Тем не менее, большинство браузеров показывают немного лучшую производительность , используя ,
x = [];
чем вызов конструктора .Если вам нужно создать массив с определенным размером, вам, например, нужно использовать
x = new Array(10);
массив, который бы создал массив с 10undefined
слотами.источник
Самый быстрый способ определить массив или объект - буквальный, потому что вам не нужно вызывать конструктор
источник
var arr = [];
логически также используется конструктор. Это просто всегда встроенный конструктор массива, а не какая-либо функция, которая в данный момент работает по имениArray
.Оба верны только. Но большинство людей используют
var a = []
Три способа объявить массив в JavaScript.
Метод 1 : Мы можем явно объявить массив с ключевым словом JavaScript «new», чтобы создать экземпляр массива в памяти (т.е. создать его и сделать его доступным).
Метод 2 : мы используем альтернативный метод для объявления массивов.
Метод 3 : JavaScript также позволяет создавать массивы косвенно, вызывая определенные методы.
источник
Существует ограничение, которое конструктор может принимать в качестве аргументов.
В большинстве систем я допустил ограничение 2 ^ 16 (2 байта):
Это приведет к ошибке (слишком много аргументов ....)
При использовании буквального [] у вас нет таких проблем.
Если вам не нужны такие большие массивы, я думаю, вы можете использовать все, что пожелаете.
источник
это сахар
это соль
источник
Это потому, что
new Array()
это неоднозначно. Это правильные конструкторы:источник