W tym samouczku za pomocą przykładów dowiesz się o różnicy między let i var w JavaScript.
W JavaScript zarówno słowa kluczowe, jak var
i let
służą do deklarowania zmiennych.
let
Kluczowe został wprowadzony w późniejszej wersji JavaScript zwanej ES6 (ES2015) . Jest to preferowany sposób deklarowania zmiennych.
JavaScript niech Vs var
Oto przegląd różnic między let
i var
.
pozwolić | var |
---|---|
let ma zasięg blokowy. | var ma zasięg funkcji. |
niech nie pozwala na ponowne deklarowanie zmiennych. | var pozwala na ponowne zadeklarowanie zmiennych. |
Podnoszenie nie występuje w wynajmach. | Podnoszenie występuje w var. |
JavaScript pozwala Vs różnym w zakresie lokalnym
var ma zasięg funkcji
Zmienna zadeklarowana wewnątrz funkcji za pomocą var
może być używana w dowolnym miejscu w funkcji. Na przykład,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
W powyższym programie zmienna a jest zadeklarowana za pomocą var
. Zmienna a może być używana w dowolnym miejscu w funkcji greet
.
let ma zasięg blokowy
let
Dostęp do zmiennej zadeklarowanej za pomocą można uzyskać tylko wewnątrz bloku kodu. Na przykład,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
Wynik
hello world Uncaught ReferenceError: b nie jest zdefiniowane
W powyższym programie zmienna a jest zadeklarowana wewnątrz funkcji i jest dostępna w dowolnym miejscu wewnątrz funkcji (a staje się zasięgiem funkcji).
Jednak zmienna b jest zadeklarowana wewnątrz instrukcji if
blokowej. b będzie miał zasięg blokowy i będzie można uzyskać do niego dostęp tylko wewnątrz if
bloku.
Stąd przy próbie uzyskania dostępu do b poza if
blokiem pojawia się błąd (jak pokazano powyżej w programie).
Uwaga : zmienne zadeklarowane wewnątrz funkcji będą miały zakres funkcji zarówno dla, jak var
i let
.
niech nie pozwala na ponowne zadeklarowanie zmiennych
1. Zmienna zadeklarowana za pomocą var
może zostać ponownie zadeklarowana. Na przykład,
var a = 5; // 5 var a = 3; // 3
Zmienna zadeklarowana za let
pomocą nie może zostać ponownie zadeklarowana w tym samym bloku lub w tym samym zakresie. Na przykład,
let a = 5; let a = 3; // error
Wynik
Uncaught SyntaxError: Identyfikator „a” został już zadeklarowany
2. Ponowne zadeklarowanie zmiennej z var
innym zakresem lub blokiem zmienia również wartość zmiennej zewnętrznej. Na przykład,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Ponowne zadeklarowanie zmiennej let
w innym zakresie lub bloku traktuje tę zmienną jako inną zmienną. A wartość zmiennej na zewnątrz nie zmienia się. Na przykład,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Gdy zmienna zadeklarowana za pomocą var
jest używana w pętli, wartość tej zmiennej zmienia się. Na przykład,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
W powyższym programie for
pętla ponownie deklaruje zmienną a. Dlatego na końcu wartość a
zmienia się na 3 .
Gdy zmienna zadeklarowana za pomocą let jest używana w pętli, wartość zmiennej nie zmienia się. Na przykład,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
W powyższym programie for
pętla traktuje zmienną a jako inną zmienną niż zadeklarowana powyżej. Zakres tej zmiennej znajduje się tylko wewnątrz for
pętli. Stąd wartość zmiennej A pozostaje 2 na końcu.
niech nie pozwala na podnoszenie
Zmienne zadeklarowane za pomocą var
są przenoszone na początek zakresu programu. Na przykład,
console.log(a); var a; // undefined (not an error)
Słowo kluczowe let
nie pozwala na podnoszenie. Na przykład,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Jeśli chcesz dowiedzieć się więcej o podnoszeniu, odwiedź JavaScript Hoisting.
let and var Browser Support
Większość nowoczesnych przeglądarek obsługuje rozszerzenie let
. Jednak niektóre przeglądarki nie obsługują w pełni let
.
Aby dowiedzieć się więcej, odwiedź stronę JavaScript let obsługa przeglądarki.
Uwaga : w przypadku zasięgu globalnego oba var
i let
będą zachowywać się w ten sam sposób. Na przykład,
var a = 5; // 5
Zmienna a będzie miała zasięg globalny i będzie dostępna w dowolnym miejscu programu.
let a = 5; // 5
Zmienna a będzie miała zasięg globalny i będzie dostępna w dowolnym miejscu programu.