Die Möglichkeiten, Js-Funktionen aufzurufen, sind wie folgt:
(1) Die benannte Funktion ruft direkt
(2) Die anonyme Funktion wird durch Referenz aufgerufen
(3) Anonymer Funktionsaufruf ohne Referenz 1
(4) Anonymer Funktionsaufruf ohne Referenz 2
(5) Anonymer Funktionsaufruf ohne Referenz 3
Abbildung 1.1 und Abbildung 1.2 zeigen, dass die Operationsprozesse dieser beiden Ausdrücke unterschiedlich sind. In Abbildung 1.1 wird der Zwangsoperator zum Ausführen der Funktionsaufrufoperation verwendet, während in Abbildung 1.2 der Zwangsoperator zum Ausführen von „ verwendet wird. Funktion direkt „Menge deklariert“ diesen Ausdruck und gibt einen Verweis auf die Funktion selbst zurück und betreibt dann den Funktionsverweis über die Funktionsaufrufoperation „()“. Der letzte anonyme Funktionsaufruf void function(){}(); wird verwendet, um die Funktion aufzurufen und den Rückgabewert zu ignorieren. Der Operator void wird verwendet, um den nachfolgenden Funktionsausdruck zu veranlassen, Operationen auszuführen. Wenn wir nicht „void“ und die Zwangsoperation „()“ verwenden, kann der Code ausgeführt werden:
(1)function(){}() //Verwenden Sie „()“, um den Aufruf zu erzwingen
(2)function(){}(); //Verwenden Sie „;“, um Anweisungen auszuführen
Die Skript-Engine geht davon aus, dass function(){} eine Funktionsdeklaration ist, wodurch die Syntaxerkennung fehlschlägt und der Code wie folgt analysiert wird:
function(){};();
function(){} wird als Anweisung interpretiert, während „();“ als separate Zeile interpretiert wird, sodass ein Syntaxfehler gemeldet wird. Warum wissen Sie, dass der Fehler durch „();“ verursacht wird? ? Wir ändern es in den folgenden Code:
function(){}(1);
Dies wird von der Engine wie folgt interpretiert:
fucntion(){};
(1); //Einzelwertausdruck
Die Grammatikprüfung ist also bestanden...