JavaScript let Vs var (z przykładami)

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 vari letsłużą do deklarowania zmiennych.

letKluczowe 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 leti 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ą varmoż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

letDostę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 ifblokowej. b będzie miał zasięg blokowy i będzie można uzyskać do niego dostęp tylko wewnątrz ifbloku.

Stąd przy próbie uzyskania dostępu do b poza ifblokiem 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 vari let.

niech nie pozwala na ponowne zadeklarowanie zmiennych

1. Zmienna zadeklarowana za pomocą varmoże zostać ponownie zadeklarowana. Na przykład,

 var a = 5; // 5 var a = 3; // 3

Zmienna zadeklarowana za letpomocą 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 varinnym 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 letw 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ą varjest 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 forpętla ponownie deklaruje zmienną a. Dlatego na końcu wartość azmienia 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 forpętla traktuje zmienną a jako inną zmienną niż zadeklarowana powyżej. Zakres tej zmiennej znajduje się tylko wewnątrz forpętli. Stąd wartość zmiennej A pozostaje 2 na końcu.

niech nie pozwala na podnoszenie

Zmienne zadeklarowane za pomocą varsą przenoszone na początek zakresu programu. Na przykład,

 console.log(a); var a; // undefined (not an error)

Słowo kluczowe letnie 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 vari letbę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.

Interesujące artykuły...