Variablenzug - "var" mit globalem Variablennamen in Funktion
Ich habe ein Szenario geübt und einen Fall gefunden:
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.