Sobes.tech
Junior

Jaka jest różnica między let a var?

sobes.tech AI

Odpowiedź od AI

var ma zasięg funkcji lub globalny, może być redeklarowany i nadpisywany. Podlega hoistingowi, inicjalizuje się jako undefined. let ma zasięg blokowy, może być nadpisywany, ale nie redeklarowany w tym samym zakresie. Również podlega hoistingowi, ale znajduje się w "strefie martwej" do momentu inicjalizacji.

Tabela porównawcza:

Cecha var let
Zasięg Funkcyjny/Globalny Blokowy
Redeclaracja Tak Nie
Nadpisywanie Tak Tak
Hoisting Tak Tak
Inicjalizacja undefined - (strefa martwa)

Przykład:

// var
function przykladVar() {
  var x = 10;
  if (true) {
    var x = 20; // Nadpisanie x
    console.log(x); // 20
  }
  console.log(x); // 20
}

// let
function przykladLet() {
  let y = 10;
  if (true) {
    let y = 20; // Nowa zmienna y w zakresie bloku
    console.log(y); // 20
  }
  console.log(y); // 10
}

przykladVar();
przykladLet();