Heim >Web-Frontend >js-Tutorial >Warum führt die Deklaration von JavaScript-Variablen in der Konsole zu „undefiniert'?
Warum ist die Konsolenausgabe „undefiniert“, wenn JavaScript-Variablen an der Konsole deklariert werden?
Beim Deklarieren einer JavaScript-Variablen an der Konsole mit var a; , kann es verwirrend erscheinen, wenn die Konsole „undefiniert“ ausgibt. Dieses Verhalten ist jedoch nicht einfach auf das Fehlen eines Initialisierers in der Deklarationsanweisung zurückzuführen.
Tatsächlicher Grund: Eval-Anweisung
Der Grund für dieses Verhalten liegt in der Funktionsweise der eval-Anweisung. Bei der Auswertung eines Ausdrucks oder einer Anweisung interpretiert die eval-Anweisung deren Ergebnis. Wenn das Ergebnis jedoch ein Wert ist, gibt eval diesen Wert zurück. Andernfalls, wenn das Ergebnis leer ist (wie es bei var a; der Fall ist), gibt eval undefiniert zurück.
Variablendeklarationen als Ausdrücke
Interessanterweise behandelt JavaScript die Variable A; Deklarationsanweisung als Ausdruck und nicht als Anweisung. Dies bedeutet, dass ein Ergebnis zurückgegeben wird, das zufällig leer ist. Wenn also var a; Wird in der Konsole verarbeitet, interpretiert die eval-Anweisung effektiv das leere Ergebnis und gibt undefiniert zurück, das dann an die Konsole ausgegeben wird.
Ignorierte Deklarationen
In bestimmten Fällen Nachfolgende Variablen- und Funktionsdeklarationen werden möglicherweise von der Konsole ignoriert, wenn es eine Anweisung mit einem nicht leeren Ergebnis gibt. Zum Beispiel:
var a = 3; undefined var a = 3; a = 4; 4 var a = 3; a = 4; var a = 5; function f() {}; 4
Dies liegt daran, dass die Auswertung von SourceElements (einschließlich Deklarationen) stoppt, sobald ein nicht leeres Ergebnis auftritt, was dazu führt, dass das Ergebnis dieser Anweisung anstelle der leeren Ergebnisse der Anweisung gedruckt wird nachfolgende Deklarationen.
Funktionsdeklarationen vs. Ausdrücke
Ein weiterer subtiler Unterschied ergibt sich bei Funktionsdeklarationen und Ausdrücken. Wenn eine Funktion mit der Funktion f() {} deklariert wird, wird sie als Funktionsdeklarationsanweisung behandelt, die ein leeres Ergebnis zurückgibt und dazu führt, dass die Konsole „undefiniert“ ausgibt. Wenn eine Funktion jedoch mit (function f() {}) definiert wird, wird sie als Funktionsausdruck behandelt, der die Funktion selbst ergibt und als solche in der Konsole ausgegeben wird.
Das obige ist der detaillierte Inhalt vonWarum führt die Deklaration von JavaScript-Variablen in der Konsole zu „undefiniert'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!