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".