2011-01-07 16 views
5

W Actionscript 3, który jest lepszy?Co jest lepsze, a = [] lub a = new Array()?

a = [1,2,3]; 

lub

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

Wydaje się, że wywołanie konstruktora Array z danymi jako indywidualnych argumentów byłoby wolniejsze i że druga metoda byłaby jakaś bezpośredniego kopiowania pamięci.

Czy wiesz, który jest lepszy w większości przypadków i dlaczego?

Odpowiedz

8

Preferuję nawiasy kwadratowe, ponieważ jest to bardziej zwięzła i łatwa do odczytania składnia.

Ta ostatnia składnia będzie w rzeczywistości nieco wolniejsza, ponieważ możesz zastąpić domyślnego konstruktora tablic wykonując Array = function() { ... }; - przynajmniej w większości wariantów ECMAScript, które to działa. Zatem użycie tego formularza będzie wymagało najpierw sprawdzenia funkcji globalnej Array.

+0

interesujące. osobiście czuję, że nowy Array (args) jest łatwiejszy do odczytania. – TheDarkIn1978

+0

Uważam, że jest niepotrzebnie gadatliwa i rozprasza. Jest to jeden z powodów, dla których nie lubię języków pochodnych BASIC. – cdhowie

5

Używanie literału literowego (var a: Array = []) zawsze będzie szybsze niż wypowiadanie nowej tablicy() i uważam, że jest to najlepsza praktyka.

7

Preferuję nawiasy kwadratowe prawie we wszystkich przypadkach, aby uniknąć nieporozumień.

Konstruktor tablica ma 2 formy:

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

Pierwsza forma tworzy i tablicę z wymienionych parametrów, jak wartości, a druga forma tworzy tablicę, która liczba elementów. To wszystko jest dobre, dopóki chcesz zainicjować tablicę z pojedynczym 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]

Ta niespójność ugryzł mnie parę razy, zanim po prostu przestałem używać Array konstruktor, z wyjątkiem bardzo rzadkich okazji, gdy chcę mieć tablicę zawierającą N niezdefiniowanych elementów.

Powiązane problemy