Który zapis tworzący tablicę w JavaScript jest niepoprawny?
A.
var liczby = [1, 2, 3];
B.
var liczby = new Array(1, 2, 3);
C.
var liczby = new Array[1, 2, 3];
D.
var liczby = [3];
Opracowane na podstawie zadania CKE, czerwiec 2023 (arkusz EE.09-SG-23.06): W arkuszu: „niepoprawny składniowo”. Zapis new Array[1, 2, 3] jest składniowo poprawny, ale kończy się błędem TypeError - usunięto słowo „składniowo”.
Wybrany zapis var liczby = new Array[1, 2, 3]; jest niepoprawny jako sposób tworzenia tablicy w JavaScript. Problem polega na tym, że konstruktor Array, jeżeli już go używamy, musi być wywołany z nawiasami okrągłymi, czyli new Array(1, 2, 3). Nawiasy kwadratowe po nazwie Array nie oznaczają tutaj „przekazania elementów tablicy”, tylko próbę odwołania się do właściwości obiektu Array. W praktyce taki kod nie tworzy tablicy z wartościami 1, 2 i 3, tylko prowadzi do błędu wykonania albo zachowania zupełnie innego niż oczekiwane. Moim zdaniem najczytelniejszą i najczęściej zalecaną formą jest literał tablicowy: var liczby = [1, 2, 3];. Jest krótszy, mniej podatny na pomyłki i zgodny z dobrymi praktykami używanymi w codziennym programowaniu front-endowym. Warto też pamiętać o różnicy: [3] tworzy tablicę z jednym elementem 3, a new Array(3) tworzy tablicę o długości 3, ale bez wpisanych wartości. To ma znaczenie np. przy pętlach, mapowaniu danych albo przygotowywaniu list do wyświetlenia na stronie.
W tym pytaniu łatwo się pomylić, bo kilka zapisów wygląda podobnie, ale w JavaScript szczegóły składni mają spore znaczenie. Poprawne sposoby utworzenia tablicy to między innymi var liczby = [1, 2, 3]; oraz var liczby = new Array(1, 2, 3);. Pierwszy wariant, czyli literał tablicowy, jest w praktyce najczęściej używany i zwykle zalecany w standardowym kodzie aplikacji webowych. Jest prosty, czytelny i od razu pokazuje, jakie elementy znajdują się w tablicy. Drugi wariant z konstruktorem Array też działa, ale bywa mniej wygodny, szczególnie przez pułapkę z jednym argumentem: new Array(3) oznacza tablicę o długości 3, a nie tablicę z elementem 3. Z kolei zapis [3] jest jak najbardziej poprawny, tylko oznacza tablicę jednoelementową, której jedyną wartością jest liczba 3. Typowy błąd myślowy polega na uznaniu, że skoro tablice zapisuje się w nawiasach kwadratowych, to można połączyć new Array z nawiasami kwadratowymi. Tak to jednak nie działa. Konstruktor wywołuje się nawiasami okrągłymi, a nawiasy kwadratowe służą głównie do tworzenia literału tablicowego albo do dostępu do elementu, np. liczby[0]. Dlatego var liczby = new Array[1, 2, 3]; nie jest prawidłowym zapisem tworzącym tablicę. Z mojego doświadczenia najlepiej trzymać się formy [1, 2, 3], bo jest najmniej problematyczna i dobrze czytelna dla innych programistów.