"Поднятие" (Hoisting)

Все переменные поднимаются в начало функции:

var scope = "global";

function f() {
    console.log(scope);  // Выведет "undefined", а не "global"
    var scope = "local"; // Инициализируется здесь, а определена везде
    console.log(scope);  // Выведет "local"
}

Этот код, в действительности, будет выполнен следующим образом:

var scope = "global";

function f() {
    var scope;
    console.log(scope);
    scope = "local";
    console.log(scope);
}

let и const

let и const тоже всплывают, но их поведение отличается:

let x = 'outer scope';

(function() {
    console.log(x); // => ReferenceError
    let x = 'inner scope';
}());

Cвязано это с Temporal Dead Zone.

results matching ""

    No results matching ""