Es gibt verschiedene Möglichkeiten, JS -Funktion aufzurufen:
(1) Rufen Sie die benannte Funktion direkt auf
Die Codekopie lautet wie folgt:
Funktion foo ()
{
}
foo ();
(2) Anonyme Funktionen werden durch Referenz aufgerufen
Die Codekopie lautet wie folgt:
fooref = function ()
{
}
fooref ();
(3) Anonymer Funktionsaufruf ohne Referenz 1
Die Codekopie lautet wie folgt:
(Funktion()
{
} ());
(4) Anonymer Funktionsaufruf ohne Referenzen 2
Die Codekopie lautet wie folgt:
(Funktion()
{
}) ();
(5) Anonymer Funktionsaufruf ohne Referenzen 3
Die Codekopie lautet wie folgt:
Hohlraumfunktion ()
{
} ();
Abbildung 1.1 und Abbildung 1.2 zeigen, dass der Betriebsprozess dieser beiden Ausdrücke unterschiedlich ist. In Abbildung 1.1 wird der erzwungene Bediener verwendet, um die Ausführung des Funktionsaufrufvorgangs zu ermöglichen. In Abbildung 1.2 wird der erzwungene Operator verwendet, um den Ausdruck "Funktion Direct -Mengen -Deklaration" zu bedienen und gibt einen Verweis auf die Funktion selbst zurück, und dann wird die Funktionsreferenz über den Funktionsaufrufbetrieb betrieben "()". Die letzte anonyme Funktion oben nennt die void function () {} (); wird verwendet, um die Funktion aufzurufen und den Rückgabewert zu ignorieren. Der Operator -Leere wird verwendet, um die folgenden Funktionsausdrücke auszuführen. Wenn wir nicht "void" und erzwungene Operation "() verwenden", kann der Code ausgeführt werden:
(1) function () {} () // '' '() ", um den Anruf zu erzwingen
(2) function () {} (); //Verwenden ";" Um die Anweisung auszuführen
Die Skript -Engine wird der Meinung, dass Function () {} eine Funktionserklärung ist, so dass sie keine Syntaxerkennung übergeben kann und der Code so analysiert wird:
Funktion(){};();
function () {} wird als Deklaration interpretiert, während "();" wird unabhängig als Zeile interpretiert, daher wird ein Syntaxfehler gemeldet. Warum wissen Sie, dass es ein Fehler ist, der durch "() verursacht wird;"? Wir ändern es in den folgenden Code:
function () {} (1);
Dies wird durch den Motor als:
fucntion () {};
(1); // Single-Value-Expression
Daher wurde die Syntaxerkennung vergangen ...