Variablenzug - "var" mit globalem Variablennamen in Funktion

Ich habe ein Szenario geübt und einen Fall gefunden:

Hier ist Geige

Laut Schließbalken soll die Funktion Zugriff habenvar x Also habe ich erwartet, dass Alarm 1 und Bedingung wegen falsch werdenif(!1) aber es alarmierteundefined und die Bedingung wird wahr und die zweite Warnung hat den Wert 10.

var x = 1;
function bar() {
    alert(x);
    if (!x) {
        var x = 10;
    }
    alert(x);
}
bar();

Also bin ich verwirrt, warum es undefiniert auffordert?

Je nachdem, in welchem Umfang eine Variable angehoben wird, wird sie an einer beliebigen Stelle definiert, an der sie immer als oben definiert gilt.

Wenn es auf einen Hebeeffekt zurückzuführen ist, muss es weiterhin 10 anstelle von undefiniert warnen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage