x = 1;
alert(x);
var y = function() {
alert(x);
var x = 2;
alert(x);
}
y();
Das Ergebnis der drei Warnungen ist: 1
, undefined
, 2
(Chrome 25)Warum ist meine globale Variable vor der lokalen Deklaration schattiert?
Meine Frage ist: warum der zweite Alarm nicht definiert ist? Warum nicht 1? Gibt es keine globale Variable x?
Weil Sie in Ihrer Funktion 'x' schattieren. Es gibt also eine Funktionsbereichsvariable "x", der noch kein Wert zugewiesen wurde, sodass Sie undefiniert werden. Daher ist es immer empfehlenswert, die Variablen am Anfang der Funktion zu deklarieren, da sie ohnehin für Sie erledigt werden. Versuch dich nicht zu verwirren. – Chad