Deklaracje zmiennych w JavaScript:
let (zmienna mutowalna, blokowy zakres),
const (stała, blokowy zakres),
var (zakres funkcyjny, starszy kod)
- specyficzne tematy na później (hoisting, zakresy i problemy z var)
domyślnie, czyli bez let, const i var (zakres globalny)
let:
let x = 10; // Deklaracja i przypisanie
x = 20; // Zmiana wartości
console.log(x); // 20
const:
const y = 20;
var:
var z = 30;
Zakres blokowy:
if (true) {
let y = 5; // Zmienna y istnieje tylko w tym bloku
console.log(y); // 5
}
console.log(y); // Błąd: y is not defined
Nieoczywiste:
function test() {
x = 10; // Brak 'let', 'const' lub 'var' → x staje się globalne!
}
test();
console.log(x); // 10
Podsumowanie – jak działają zakresy w JS:
Global Scope – dostępny wszędzie w kodzie.
Function Scope – dostępny tylko w obrębie funkcji.
Block Scope – dostępny tylko w obrębie if, for, while, lub innych bloków.
Lexical Scope – zależy od tego, gdzie funkcja została zadeklarowana, a nie wywołana.
this Scope – zależy od kontekstu wywołania funkcji.