Jaka jest różnia między "let" i "var"?

ECMAScript 6 wprowadził instrukcję let. Słyszałem, że opisywana jest jako zmienna „lokalna”, ale wciąż nie jestem pewien, jak zachowuje się inaczej niż słowo kluczowe var. Jakie są różnice? Kiedy powinno się używać let w stosunku do var?

1 odpowiedź

Różnica polega na określeniu zakresu. var ma zasięg do najbliższego bloku funkcyjnego, a let jest ograniczony do najbliższego bloku obejmującego, który może być mniejszy niż blok funkcyjny. Oba są globalne, jeśli poza blokiem.

Ponadto zmienne zadeklarowane z let nie są dostępne, zanim nie zostaną zadeklarowane w otaczającym ich bloku. Jak widać w wersji demonstracyjnej, spowoduje to wyjątek ReferenceError. Globalny: Są bardzo podobne, gdy są używane w ten sposób poza blokiem funkcyjnym.

let me = 'go';  // globalny zasięg
var i = 'able'; // globalny zasięg

Funkcja: Są identyczne, gdy są używane w ten sposób w bloku funkcyjnym.

function ingWithinEstablishedParameters() {
    let terOfRecommendation = 'awesome worker!'; //blok funkcyjny
    var sityCheerleading = 'go!'; //blok funkcyjny
}

Blok: Oto różnica. let jest widoczny tylko w pętli for (), a var jest widoczny dla całej funkcji.

function allyIlliterate() {
    //tuce jest * nie * widoczne tutaj

    for( let tuce = 0; tuce < 5; tuce++ ) {
        //tuce jest widoczne tylko tutaj
        //a dla każdej iteracji pętli istnieje osobna zmienna tuce
    }

    //tuce jest * nie * widoczne tutaj
}

function byE40() {
    //nish * jest * widoczny tutaj

    for( var nish = 0; nish < 5; nish++ ) {
        //nish jest widoczny dla całej funkcji
    }

    //nish * jest * widoczny tutaj
}

Deklaracja: Zakładając tryb ścisły, var pozwoli ci ponownie zadeklarować tę samą zmienną w tym samym zakresie. Z drugiej strony, let nie:

'use strict';
let me = 'foo';
let me = 'bar'; // SyntaxError: Identyfikator „me” został już zadeklarowany
'use strict';
var me = 'foo';
var me = 'bar'; // Nie ma problemu, `me` zostaje zastąpione.

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.