Entschuldigen Sie diese Frage, aber dieses Problem hat mir den Tag versaut.
Die folgenden Code-Ausschreibungen 10 wie es sein sollte:
var globalId='10';
function check(){
alert(globalId);
}
check();
Aber der nächste Code meldet undefiniert :
var globalId='10';
function check(){
alert(globalId);
var globalId;
}
check();
Ich bin mir bewusst, dass eine Variable, die ich in einer Funktion deklariere, eine lokale Variable ist, aber wenn ich sie bereits als global deklariert habe, wie kann es dann sein, dass meine Warnungen sagen undefiniert ?
Dies ist ein einfaches Beispiel, aber in meinem ursprünglichen Code habe ich eine Menge Dinge zwischen dem Anfang der Funktion getan, dann einen langen Weg nach unten habe ich geprüft, ob globalId
definiert wurde, sonst definieren Sie es: if(!globalId){var globalId;}
Das bedeutete, dass meine Warnung am Anfang der Funktion undefiniert war, als ob JavaScript zuerst die ganze Funktion ausgeführt hätte, um zu sehen, ob irgendwelche Variablen deklariert sein könnten, und wenn ja, sie zu deklarieren, und deshalb zeigte meine Warnung auf eine "nicht deklarierte" Variable.
Kann mir jemand erklären, warum dies geschehen, und wenn es wahr ist, dass JavaScript "pre-declares" alle Variablen vor der Ausführung einer Funktion, auch Variablen in Bedingungen nicht einmal erfüllt deklariert?
0 Stimmen
Lokale Variablen haben immer Vorrang vor globalen Variablen. Das gilt auch für C und die meisten anderen Sprachen. In C++ können Sie die globale Variable auswählen, indem Sie
::
. Globale und lokale Variablen ähnlich zu benennen, ist ohnehin eine schlechte Praxis