2017-06-28 3 views
1

Ich habe gelesen this großer Artikel, der die Ereignisschleife erklärt."undefined" Ausgabe in Ereignisschleife, warum?

Innerhalb dieses Artikels gibt dieser Code ist, die veranschaulichen, wie die Nachrichten in die Warteschlange gestellt und verarbeitet:

function f() { 
 
    console.log("foo"); 
 
    setTimeout(g, 0); 
 
    console.log("baz"); 
 
    h(); 
 
} 
 

 
function g() { 
 
    console.log("bar"); 
 
} 
 

 
function h() { 
 
    console.log("blix"); 
 
} 
 

 
f();

Dies wird in der Konsole (Chrom) die folgenden drucken: foo, Baz, Blix, undefined, Bar.

Ich denke, ich verstehe, was hier vorgeht, aber ich verstehe nicht, wo ist das undefined kommt aus?

+1

Das undefined kommt aus dem Ergebnis eines Funktionsaufrufs, es gibt undefined zurück und Chrome druckt es nur. –

+2

[Bitte keine Tags in Fragetitel einfügen] (https://stackoverflow.com/help/tagging) – Liam

Antwort

6

undefined ist der Rückgabewert von f(), den Sie sehen, wenn Sie dies auf einer interaktiven Konsole ausführen, die automatisch den Wert des zuletzt ausgeführten Ausdrucks ausgibt.

1

Der Wert undefined ist das Ergebnis der Anweisung f(). Jede Anweisung in Javascript hat einen Wert als Ausdruck; Funktionen ohne explizite Return-Anweisung geben grundsätzlich undefined zurück.

Die Chrome-Konsole gibt immer den Wert der letzten ausgeführten Anweisung aus, die in diesem Fall das Ergebnis f() ist.

Es ist verwirrend, dass bar später ausgedruckt wird (d. H. Nach f() zurückkehrt); aber das wird durch die Zeitüberschreitung verursacht.

Verwandte Themen