Przejdź do głównej treści
  1. Strona główna
  2. Technik informatyk
  3. INF.03
  4. Pytanie

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe JavaScript

<script>
  var imiona = ["Ala", "Ola", "Ela", ""];
  tymczasowa=imiona.length;
</script>
Przedstawiony kod JavaScript powoduje przypisanie do zmiennej tymczasowa wartości:

W tym fragmencie kodu tworzona jest tablica `imiona` z czterema elementami: "Ala", "Ola", "Ela" oraz pusty łańcuch znaków `""`. W JavaScript właściwość `.length` tablicy zwraca liczbę elementów w tablicy, a nie długość tekstu, ani sumę długości napisów. Niezależnie od tego, że ostatni element jest pustym stringiem, on nadal jest pełnoprawnym elementem tablicy. Dlatego `imiona.length` zwraca wartość 4, która następnie jest przypisywana do zmiennej `tymczasowa`.
Moim zdaniem warto zapamiętać jedną prostą zasadę: dla obiektów typu Array w JavaScript `.length` oznacza ilość elementów, a dla stringów `.length` oznacza ilość znaków w napisie. To jest częste źródło pomyłek, szczególnie na początku nauki. Gdybyśmy napisali `"Ala".length`, wtedy dostalibyśmy 3, bo napis ma trzy znaki. Ale `imiona.length` patrzy tylko na to, ile pozycji ma tablica, więc wynik to 4.
W praktyce `.length` jest bardzo często używane w pętlach, np. `for (var i = 0; i < imiona.length; i++) { ... }`, żeby przejść po wszystkich elementach tablicy. Dobrą praktyką jest też świadome operowanie na długości tablicy, bo w JavaScript można ją zmienić: ustawienie `imiona.length = 2` przytnie tablicę do dwóch elementów, a ustawienie większej wartości doda puste miejsca (tzw. `empty slots`). W nowoczesnym kodzie warto też pamiętać o metodach takich jak `forEach`, `map`, `filter`, które ukrywają bezpośrednią pracę z `.length`, ale nadal działają na tej samej koncepcji liczby elementów w tablicy. Z mojego doświadczenia dokładne rozumienie, co zwraca `.length` w różnych typach danych, bardzo ułatwia debugowanie i pisanie czytelnego kodu.
Kod tworzy tablicę `imiona` i przypisuje do niej cztery elementy: trzy napisy z imionami oraz jeden pusty string. Następnie do zmiennej `tymczasowa` przypisywana jest wartość `imiona.length`. Kluczowe jest zrozumienie, co dokładnie oznacza właściwość `.length` w kontekście tablicy JavaScript.
Częsty błąd polega na myleniu `.length` tablicy z długością pojedynczego napisu. Niektórzy patrzą na pierwszy element "Ala" i kojarzą długość 3, inni sumują znaki w kilku elementach, jeszcze inni w ogóle ignorują pusty string, bo „nic tam nie ma”. To są naturalne skojarzenia, ale w tym przypadku zupełnie nietrafione. W przypadku obiektu typu Array, zgodnie ze specyfikacją ECMAScript, właściwość `length` odzwierciedla najwyższy użyty indeks plus jeden, czyli de facto liczbę pozycji w tablicy, a nie zawartość tych pozycji.
Pusty string `""` jest pełnoprawnym elementem tablicy, tak jak każdy inny. To, że ma długość tekstową 0, nie ma żadnego wpływu na długość tablicy. Tablica ma indeksy 0, 1, 2 i 3, więc `length` jest równe 4. Próby uzasadniania innych odpowiedzi zwykle wynikają z mieszania pojęć: długości tekstu, liczby niepustych elementów, albo jakiegoś intuicyjnego „liczenia tylko tych, co coś zawierają”. JavaScript tego nie robi automatycznie. Jeżeli chcielibyśmy policzyć tylko niepuste napisy, trzeba by użyć np. `imiona.filter(x => x !== "").length`.
Innym typowym nieporozumieniem jest traktowanie `.length` jak czegoś dynamicznie obliczanego na podstawie treści, a nie struktury. Tymczasem silnik języka przechowuje tę wartość jako właściwość, związaną z indeksem elementów, a nie z ich wartością. Dobra praktyka w programowaniu webowym to zawsze sprawdzać w dokumentacji, co dokładnie oznacza dana właściwość lub metoda dla konkretnego typu danych. Pozwala to unikać takich pułapek i pisać kod, który zachowuje się przewidywalnie, szczególnie gdy pracujemy z tablicami o mieszanej zawartości, w tym z pustymi stringami czy wartościami `null` i `undefined`.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wyślemy tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.