W JavaScript słowa kluczowe let
, const
i var
służą do deklarowania zmiennych, ale różnią się zachowaniem pod względem zakresu, hoistingu i możliwości ponownego przypisania.
var
- Zakres:
var
ma zakres funkcji, co oznacza, że jest dostępna w funkcji, w której została zadeklarowana, lub globalnie, jeśli nie znajduje się w funkcji. - Hoisting: Zmienne zadeklarowane za pomocą
var
są przenoszone na początek swojego bieżącego zakresu. Oznacza to, że deklaracja jest przesuwana na górę, ale nie inicjalizacja. - Możliwość ponownego przypisania: Zmienne zadeklarowane za pomocą
var
mogą być ponownie przypisane i aktualizowane.
Przykład:
function przykladVar() { console.log(x); // undefined var x = 10; console.log(x); // 10 } przykladVar();
let
- Zakres:
let
jest blokowy, co oznacza, że jest dostępna tylko w bloku, instrukcji lub wyrażeniu, w którym jest używana. - Hoisting:
let
jest hoistowane, ale w przeciwieństwie dovar
, nie jest inicjalizowane. Dostęp do niego przed deklaracją powoduje błąd ReferenceError. - Możliwość ponownego przypisania: Zmienne zadeklarowane za pomocą
let
mogą być ponownie przypisane.
Przykład:
function przykladLet() { if (true) { let y = 20; console.log(y); // 20 } console.log(y); // ReferenceError: y is not defined } przykladLet();
const
- Zakres: Podobnie jak
let
,const
jest blokowy. - Hoisting:
const
jest również hoistowane, ale nie jest inicjalizowane, podobnie jaklet
. - Możliwość ponownego przypisania: Zmienne zadeklarowane za pomocą
const
nie mogą być ponownie przypisane. Jednak jeśli zmienna jest obiektem lub tablicą, właściwości lub elementy mogą być modyfikowane.
Przykład:
function przykladConst() { const z = 30; console.log(z); // 30 // z = 40; // TypeError: Assignment to constant variable. const tablica = [1, 2, 3]; tablica.push(4); console.log(tablica); // [1, 2, 3, 4] } przykladConst();
Podsumowanie
- Używaj
var
, jeśli potrzebujesz zmiennych o zakresie funkcji (rzadko zalecane). - Używaj
let
dla zmiennych, które będą się zmieniać w czasie i mają zakres blokowy. - Używaj
const
dla zmiennych, które nie powinny być ponownie przypisane, zapewniając niemutowalność dla wartości prymitywnych.