Ich lerne Javascript, und ich habe ein Video-Tutorial auf youtube verfolgt
Dies ist der ursprüngliche Code
und das Ergebnis des obigen Codes ist
5 main.js (Zeile 4)
erledigt main.js (Zeile 9)
und ich mache eine kleine Änderung an dem Code in diese
und das Ergebnis ist das
erledigt main.js (Zeile 9)
5 main.js (Zeile 4)
meine Frage sind:
Könnten Sie mir erklären, warum ich das Ergebnis so gesammelt habe?,
und was ist der Unterschied, wenn wir eine Funktion mit der Klammer () und ohne die Klammer () aufrufen?
Erläuterung des ersten Snippets
%Vor%Erläuterung des zweiten Snippets
%Vor% Wie Sie sehen, führt das erste Code-Snippet die Funktion callback
erst in der Funktion add
aus, während die zweite Komponente die callback
vor der add
ausführt, so dass alles, was zurückkommt, übergeben werden kann von logDone
in add
.
Vielleicht wird es Ihnen klarer, wenn ich die logDone
-Deklaration zu diesem ändern:
Der Bezeichner logDone
ist im Grunde nur eine Variable, die auf eine Funktion verweist. Um die Funktion auszuführen (auch: call oder: rufen Sie auf), fügen Sie Klammern hinzu: logDone()
.
In Ihrem ersten Beispiel übergeben Sie lediglich die Funktion selbst als drittes Argument an add()
, das dann in add()
mit callback();
ausgeführt wird.
In Ihrem zweiten Beispiel führen Sie jedoch die Funktion mit logDone()
sofort aus, was dazu führt, dass der Rückgabewert von logDone()
1 als übergeben wird drittes Argument für den Aufruf add()
. Mit anderen Worten, zuerst wird logDone
ausgeführt (was zu der ersten Protokollnachricht führt), dann add
wird ausgeführt (was zu der zweiten Protokollnachricht führt).
Außerdem macht die Anweisung callback;
, innerhalb add
nichts. Und wenn Sie die Klammern wie im ersten Beispiel verlassen hätten, würde dies zu einem Fehler führen, weil undefined
2 keine Funktion ist.
1) was in diesem Fall undefined
ist, weil logDone()
nicht explizit etwas zurückgibt.
2) der Wert, der das Ergebnis des Aufrufs logDone()
war.
und was ist der Unterschied, wenn wir eine Funktion mit der Klammer () und ohne die Klammer () aufrufen?
Wenn Sie ()
haben, dann rufen Sie es an. Wenn nicht, dann nicht.
Könnten Sie mir erklären, warum ich das Ergebnis so gesammelt habe?,
Im ersten Beispiel übergeben Sie eine Funktion an add
und dann ruft die Funktion add
sie auf.
Im zweiten Beispiel rufen Sie die Funktion auf und übergeben ihren Rückgabewert ( undefined
) an add
, was sie dann in einer Anweisung erwähnt, aber nichts damit macht.
Wenn Sie func([args=optional])
aufrufen, wird func
aufgerufen oder wird aufgerufen.
und was ist der Unterschied, wenn wir eine Funktion mit der Klammer () und aufrufen ohne die Klammer ()?
Wir rufen die Funktion nur dann auf, wenn wir ()
ausführen (Argumente optional). Wenn eine Funktion ohne Klammern ist, verwenden Sie nur ihre Referenz .
Wenn Sie eine Referenz speichern, können Sie eine Funktion in einer Variablen ausführen. Sie können sie später aufrufen, was callback
tut.
Da im zweiten Snippet nichts zurückgegeben wird, hat der Rückruf undefined
. Versuchen Sie es aufzurufen, indem Sie callback()
im zweiten Snippet ausführen, und Sie sollten einen Fehler sehen, der besagt,
undefined
ist keine Funktion.
Im ersten Beispiel übergeben Sie eine Funktion als Parameter.
In Ihrem zweiten Beispiel übergeben Sie ein Funktionsergebnis nach dem Aufruf als Parameter.
Tags und Links javascript