Разница между var и let - PullRequest
       49

Разница между var и let

0 голосов
/ 01 июля 2018

Я только что прочитал обсуждение о var и let в Кайл Симпсонс «Вы не знаете Javascript».

Глава 2: Вложенные области действия

Функция foo использует блочное объявление переменных с let, функция bar использует обычное объявление с var. Для ясности, в этом примере переменные b и c фактически доступны в одних и тех же областях, верно? Так какой смысл представлять здесь функцию foo?

function foo() {
    var a = 1;
    if (a >= 1) {
        let b = 2;

        while (b < 5) {
            let c = b*2;
            b++;
            console.log(a + b); 
        }
    }   
}

function bar() {
    var a = 1;
    if (a >= 1) {
        var b = 2;

        while (b < 5) {
            var c = b*2;
            b++;
            console.log(a + b); 
        }
    }   
}

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Область действия Var - это ближайший блок function , а let видна только в ближайших парах {...}. Таким образом, в bar () вы можете использовать b и c вне оператора if, потому что они «принадлежат» всей функции.

0 голосов
/ 01 июля 2018

В функции foo переменная b недоступна вне оператора if, а переменная c недоступна вне while.

Причина этого в том, что let объявленные переменные имеют область видимости блока.

Например, следующее log(b) приведет к b is undefined:

function foo() {
    var a = 1;
    if (a >= 1) {
        let b = 2;

        while (b < 5) {
            let c = b*2;
            b++;
            console.log(a + b); 
        }
    }   

    console.log(b); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...