Что предпочтительнее, a = [] или a = new Array ()? - PullRequest
6 голосов
/ 08 января 2011

В Actionscript 3, что предпочтительнее?

a = [1,2,3];

или

a = new Array(1,2,3);

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

Знаете ли вы, что лучше использовать в большинстве случаев и почему?

Ответы [ 3 ]

9 голосов
/ 08 января 2011

Я предпочитаю квадратные скобки, потому что это более лаконичный и удобный для чтения синтаксис.

Последний синтаксис будет немного медленнее, поскольку вы можете заменить конструктор массива по умолчанию, выполнив Array = function() { ... }; - по крайней мере, в большинстве вариантов ECMAScript это работает.Таким образом, использование этой формы потребует поиска глобальной функции Array.

7 голосов
/ 09 января 2011

Я предпочитаю квадратные скобки почти во всех случаях просто, чтобы избежать путаницы.

Конструктор массива имеет 2 формы:

  • Array(...)
  • Array(size:int)

Первая форма создается и массив сперечисленные параметры в качестве значений, а вторая форма создает массив с таким количеством элементов.Это все хорошо, пока вы не захотите инициализировать массив одним int:

  • new Array() => []
  • new Array("foo") => ["foo"]
  • new Array("foo", "bar") => ["foo", "bar"]
  • new Array(42,43) => [42,43]
  • new Array(42) => [undefined, ...undefined x 40..., undefined]

Это несоответствие поразило меня пару раз, прежде чем я просто перестал использовать конструктор Array, за исключением крайне редкого случая, когда я хочу массив сN неопределенных элементов.

6 голосов
/ 08 января 2011

Использование литерала массива (var a: Array = []) всегда будет быстрее, чем произнесение нового массива (), и я считаю, что это лучший способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...