KWALIFIKACJA INF3 - CZERWIEC 2014

PYTANIE NR 29.
Jak określany jest typ zmiennej w JavaScript?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W JavaScript obowiązuje typowanie dynamiczne, więc nie deklaruje się typu przy tworzeniu zmiennej. Typ wynika z aktualnie przypisanej wartości i może się zmieniać w trakcie działania programu. Stwierdzenia o deklaracji typu, kompilacji lub typowaniu statycznym nie opisują standardowego JS.

Pełne wyjaśnienie:

W JavaScript typowanie jest dynamiczne. Oznacza to, że podczas deklaracji (np. let, const, var) nie podaje się typu, a informacja o typie dotyczy wartości, która aktualnie znajduje się w zmiennej.

Dlatego poprawne jest stwierdzenie: "Przez wartość przypisaną do zmiennej." Jeżeli do tej samej zmiennej przypiszesz inną wartość (np. najpierw liczbę, a później napis), to w praktyce pracujesz z innym typem wartości w runtime. Do sprawdzenia typu bieżącej wartości często wykorzystuje się operator typeof.

Pozostałe odpowiedzi są błędne, ponieważ opisują model znany z języków statycznie typowanych lub kompilowanych:

  • "Musi być zadeklarowany przed użyciem." – w czystym JavaScript nie ma obowiązku (ani standardowego mechanizmu) deklarowania typu zmiennej przed jej użyciem.
  • "JavaScript jest statycznie typowany." – to nieprawda; statyczne typowanie jest cechą innych języków lub narzędzi (np. rozszerzeń takich jak TypeScript), ale nie samego JavaScript zgodnego z ECMAScript.
  • "Określany na etapie kompilacji." – JavaScript nie opiera typowania na etapie kompilacji w sensie znanym z C/C++/Javy; typy wartości są rozstrzygane w czasie wykonania.

Na egzaminie zwracaj uwagę na słowa-klucze: dynamicznie oznacza "w runtime", a statycznie sugeruje "przed uruchomieniem, podczas kompilacji".

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Dynamiczne typowanie oznacza, że typ jest ustalany w trakcie działania programu na podstawie aktualnej wartości. Nie deklarujesz typu przy let/const/var, a ta sama zmienna może przechowywać raz liczbę, a później napis.
W standardowym JavaScript typ wynika z wartości przypisanej do zmiennej. Pytania egzaminacyjne zwykle sprawdzają, czy odróżniasz JS od języków statycznie typowanych oraz czy wiesz, że "zmienna" nie ma stałego typu.
Bo specyfikacja ECMAScript zakłada typowanie dynamiczne: typ jest cechą wartości, nie deklaracji zmiennej. Deklaracja tworzy identyfikator, a dopiero przypisana wartość "niesie" informację o typie.
Najczęściej używa się operatora typeof, np. typeof x. Zwraca on napis opisujący typ wartości (np. "number", "string"). W praktyce pomaga to w debugowaniu i walidacji danych.
Tak. Ta sama zmienna może przechowywać różne typy wartości w różnych momentach, bo typowanie jest dynamiczne. Zmiana typu wynika z kolejnego przypisania, np. najpierw liczba, potem napis, bez błędu kompilacji.
W ujęciu praktycznym w JavaScript mówi się, że wartości mają typ, a zmienne są tylko "pojemnikami" na wartości. Dlatego sensowniej jest pytać o typ aktualnie przechowywanej wartości niż o "stały typ zmiennej".
Nie. W JavaScript nie deklaruje się typów zmiennych tak jak w językach statycznie typowanych. Jeśli spotykasz adnotacje typów, to zwykle jest to TypeScript albo narzędzia analizujące kod, a nie wymaganie samego JS.
Błędy wynikają zwykle nie z "deklaracji typu", ale z użycia wartości w nieodpowiednim kontekście, np. wywołania metody, której dany typ nie ma. Dynamiczne typowanie nie eliminuje błędów, tylko przesuwa je na etap działania programu.
Najczęściej myli się JavaScript z językami kompilowanymi: odpowiedzi o "kompilacji" i "deklarowaniu typu" brzmią znajomo, ale nie pasują do JS. Druga pułapka to utożsamienie JS z TypeScriptem i wybieranie opcji o statycznym typowaniu.
Warto utrwalić: (1) typowanie dynamiczne, (2) typ dotyczy wartości w runtime, (3) brak deklaracji typu przy let/const/var, (4) podstawowe typy danych i użycie typeof. Pomagają krótkie ćwiczenia z przypisaniami.
info

To pytanie poprawnie rozwiązuje 39% zdających egzamin. bardzo trudne

Według specjalistów z branży: "W JavaScript obowiązuje typowanie dynamiczne, więc nie deklaruje się typu przy tworzeniu zmiennej."

Źródła:

  • ECMA International: ECMA-262 (ECMAScript Language Specification) – dokument główny specyfikacji (informacje o typach i semantyce wartości), https://tc39.es/ecma262/ (dostęp: 2026-03-05)
  • MDN Web Docs: "JavaScript data types and data structures" (opis typów danych i charakteru dynamicznego), https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures (dostęp: 2026-03-05)
  • MDN Web Docs: "typeof" (operator sprawdzania typu wartości), https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof (dostęp: 2026-03-05)

Materiały:

  • Specyfikacja ECMA-262 (ECMAScript) – sekcje dot. typów danych i semantyki wartości
  • MDN Web Docs: artykuły o typach danych i operatorze typeof
  • Materiały dydaktyczne dot. różnic: JavaScript vs TypeScript (wprowadzenie do typowania)

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego