Les façons d'appeler les fonctions Js sont les suivantes :
(1) La fonction nommée appelle directement
(2) La fonction anonyme est appelée par référence
(3) Appel de fonction anonyme sans référence 1
(4) Appel de fonction anonyme sans référence 2
(5) Appel de fonction anonyme sans référence 3
La Figure 1.1 et la Figure 1.2 montrent que les processus de fonctionnement de ces deux expressions sont différents. Dans la Figure 1.1, l'opérateur de coercition est utilisé pour effectuer l'opération d'appel de fonction, tandis que dans la Figure 1.2, l'opérateur de coercition est utilisé pour faire fonctionner le ". fonction directement" Quantity déclare "cette expression et renvoie une référence à la fonction elle-même, puis exploite la référence de fonction via l'opération d'appel de fonction "()". Le dernier appel de fonction anonyme void function(){}(); ci-dessus est utilisé pour appeler la fonction et ignorer la valeur de retour. L'opérateur void est utilisé pour que l'expression de fonction suivante effectue des opérations. Si on n'utilise pas "void" et l'opération de coercition "()", le code peut-il être exécuté :
(1)function(){}() //Utilisez ''()" pour forcer l'appel
(2)function(){}(); //Utilisez ";" pour exécuter des instructions
Le moteur de script pensera que function(){} est une déclaration de fonction, échouant ainsi la détection de la syntaxe et le code sera analysé comme ceci :
fonction(){};();
function(){} est interprété comme une instruction, tandis que "();" est interprété comme une ligne distincte, donc une erreur de syntaxe sera signalée. Pourquoi savez-vous que l'erreur est causée par "();" ? On le change par le code suivant :
fonction(){}(1);
Ceci sera interprété par le moteur comme :
fonction(){};
(1); //Expression à valeur unique
Ainsi réussi la vérification de grammaire...