Zmienne podnoszenie - „var” z nazwą zmiennej globalnej w funkcji
Ćwiczyłem jakiś scenariusz i znalazłem przypadek:
Zgodnie z funkcją zamknięcia pasek powinien mieć dostępvar x
więc spodziewałem się, że zaalarmuję 1 i warunek stanie się fałszywy z powoduif(!1)
ale to zaalarmowałoundefined
a warunek get true, a drugi alert ma wartość 10.
var x = 1;
function bar() {
alert(x);
if (!x) {
var x = 10;
}
alert(x);
}
bar();
Więc jestem zdezorientowany, dlaczego to podpowiada niezdefiniowane?
Zgodnie z podnoszeniem w określonym zakresie definiujesz zmienną w dowolnym miejscu, w którym zawsze uważany jest za zdefiniowany.
Jeśli jest to spowodowane efektem podnoszenia, nadal musi zaalarmować 10 zamiast niezdefiniowanych.