2011-01-07 12 views
5

En Actionscript 3, ¿cuál es preferible?¿Qué es preferible, a = [] o a = new Array()?

a = [1,2,3]; 

o

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

Parece que llamar al constructor de Array con los datos como argumentos individuales sería más lento y que el otro método sería una especie de copia de memoria directa.

¿Sabes cuál es mejor usar en la mayoría de los casos y por qué?

Respuesta

8

prefiero los corchetes porque es una forma más concisa y fácil de leer la sintaxis.

Este último sintaxis, de hecho, ser un poco más lenta, ya que puede sustituir a la matriz constructor por defecto al hacer Array = function() { ... }; - al menos en la mayor parte de ECMAScript variantes esto funciona. Entonces, usar esa forma requerirá que se busque primero la función global Array.

+0

interesante. personalmente, siento que el nuevo Array (args) es más fácil de leer. – TheDarkIn1978

+0

Lo encuentro innecesariamente detallado y molesto. Esa es una de las razones por las que no me gustan los lenguajes derivados de BASIC. – cdhowie

5

El uso de un literal de matriz (var a: Array = []) siempre va a ser más rápido que diciendo new Array(), y creo que se considera que es una buena práctica.

7

Prefiero los corchetes para casi todos los casos simplemente para evitar confusiones.

El constructor matriz tiene 2 formas:

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

La primera forma crea y matriz con los parámetros enumerados como los valores, y la segunda forma crea una matriz con que cantidad de elementos Está todo bien hasta que se desea inicializar una matriz con una sola 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]

Esa inconsistencia me mordió un par veces antes de que acabara de dejar de usar la matriz constructor, a excepción de la ocasión extremadamente rara cuando quiero una matriz con N elementos no definidos.

Cuestiones relacionadas