Kiedy muszę zadeklarować nową tablicę, używam tej notacji
var arr = new Array();
Ale podczas testowania w trybie online, na przykład na jsbin , ostrzeżenie sygnalizuje mi „Użyj notacji literału tablicy []”.
Nie znalazłem powodu, aby nie używać konstruktora. Czy w jakiś sposób jest mniej wydajne niż używanie []
? A może to zła praktyka?
Czy jest dobry powód, aby używać var arr = [];
zamiast var arr = new Array();
?
javascript
Naigel
źródło
źródło
Odpowiedzi:
Przeważnie ludzie używają,
var a = []
ponieważ Douglas Crockford tak mówi .Jego powody obejmują nieintuicyjne i niespójne zachowanie
new Array()
:Zauważ, że nie ma sposobu,
new Array()
aby utworzyć tablicę zawierającą tylko jeden wstępnie określony element liczbowy!Używanie
[]
jest bardziej wydajne i bezpieczniejsze ! Możliwe jest nadpisanieArray
konstruktora i wykonanie dziwnych rzeczy, ale nie można nadpisać zachowania[]
.Osobiście zawsze używam
[]
składni i podobnie zawsze używam{}
składni zamiastnew Object()
.źródło
[]
wywołuje wewnętrzny konstruktor, a nie jakąkolwiek wartośćArray.constructor
, która ma w danym momencie.Array
konstruktora: jsperf.com/new-arrayJedną istotną różnicą jest to, że zawsze
[]
utworzy instancję nowego Array, podczas gdy może zostać przejęty w celu utworzenia innego obiektu .new Array
W moim przykładowym kodzie
Array
funkcja została ukryta przed resztą zakresu dokumentu, jednak jest bardziej prawdopodobne, że jeśli kiedykolwiek napotkasz tego rodzaju problem, kod nie zostanie pozostawiony w ładnym zamknięciu i prawdopodobnie trudne do zlokalizowania.Zastrzeżenie : nie jest dobrym pomysłem porywanie
Array
konstruktora.źródło
dla łatwości konserwacji użyj
[]
Literał tablicy jest bardziej przewidywalny, ponieważ używa go większość programistów. Większość używanych tablic będzie używać literału, a dopasowanie kodu do tego, czego używają inni programiści, ma wartość.
w przypadku pustych tablic użyj
[]
Jak pokazano tutaj , użycie literału pustego i kilku znanych elementów jest grubsze niż konstruktor Array.
dla tablicy o znanym rozmiarze użyj
new Array(size)
Jeśli rozmiar jest znany, użycie konstruktora Array znacznie poprawia wydajność. Jednak oznacza to również, że musisz mieć do czynienia z tablicą, która ma już słowo „undefined” wypełniające wszystkie jej wartości.
Jak pokazano tutaj
Działa to również w przypadku bardzo małych tablic .
źródło
Nie, właściwie nie ma powodu, aby używać jednej notacji zamiast drugiej dla pustych tablic.
Jednak większość przeglądarek wykazuje nieco lepszą wydajność przy użyciu
x = [];
niż wywołanie Konstruktora .Jeśli chcesz utworzyć tablicę o określonym rozmiarze, musisz
x = new Array(10);
na przykład użyć , która utworzy tablicę z 10undefined
gniazdami.źródło
Najszybszym sposobem zdefiniowania tablicy lub obiektu jest sposób dosłowny, ponieważ nie musisz wywoływać konstruktora
źródło
var arr = [];
logicznie również używa konstruktora. Jest to zawsze wbudowany konstruktor tablicy, a nie jakakolwiek funkcja o tej nazwieArray
.Oba są tylko poprawne. Ale większość ludzi używa
var a = []
Trzy sposoby zadeklarowania tablicy w JavaScript.
metoda 1 : Możemy jawnie zadeklarować tablicę za pomocą słowa kluczowego JavaScript "new", aby utworzyć instancję tablicy w pamięci (tj. utworzyć ją i udostępnić).
metoda 2 : używamy alternatywnej metody do deklarowania tablic.
metoda 3 : JavaScript pozwala również pośrednio tworzyć tablice, wywołując określone metody.
źródło
Istnieje ograniczenie, które konstruktor może przyjąć jako argumenty.
W większości systemów, które napotkałem, limit wynosi 2 ^ 16 (2 bajty):
Spowoduje to błąd (za dużo argumentów ...)
Używając dosłownego [], nie masz takich problemów.
Jeśli nie dbasz o tak duże tablice, myślę, że możesz użyć tego, co wolisz.
źródło
to cukier
to sól
źródło
To dlatego, że
new Array()
jest niejednoznaczne. Oto poprawne konstruktory:źródło