Il existe plusieurs façons d'appeler la fonction JS:
(1) Appelez directement la fonction nommée
La copie de code est la suivante:
fonction foo ()
{
}
foo ();
(2) les fonctions anonymes sont appelées par référence
La copie de code est la suivante:
fooref = fonction ()
{
}
fooref ();
(3) Appel de fonction anonyme sans référence 1
La copie de code est la suivante:
(fonction()
{
} ());
(4) Appel de fonction anonyme sans références 2
La copie de code est la suivante:
(fonction()
{
}) ();
(5) Appel de fonction anonyme sans références 3
La copie de code est la suivante:
fonction void ()
{
} ();
Les figures 1.1 et la figure 1.2 montrent que le processus de fonctionnement de ces deux expressions est différent. Dans la figure 1.1, l'opérateur forcé est utilisé pour permettre l'exécution de l'opération d'appel de fonction. Dans la figure 1.2, l'opérateur forcé est utilisé pour faire fonctionner l'expression "Déclaration de quantité directe de fonction" et renvoie une référence à la fonction elle-même, puis la référence de la fonction est opérée via l'opération d'appel de fonction "()". La dernière fonction anonyme ci-dessus appelle la fonction void () {} (); est utilisé pour appeler la fonction et ignorer la valeur de retour. L'opérateur void est utilisé pour faire les expressions de fonction qui le suivent effectuent des opérations. Si nous n'utilisons pas "void" et l'opération forcée "()", le code peut-il être exécuté:
(1) function () {} () // utilisez '' () "pour forcer l'appel
(2) function () {} (); //Utiliser ";" Pour exécuter l'instruction
Le moteur de script pensera que la fonction () {} est une déclaration de fonction, de sorte qu'elle ne peut pas passer la détection de syntaxe, et le code est analysé comme ceci:
fonction(){};();
function () {} est interprété comme une déclaration, tandis que "();" est interprété indépendamment comme une ligne, donc une erreur de syntaxe sera signalée. Pourquoi savez-vous que c'est une erreur causée par "();"? Nous le modifions par le code suivant:
function () {} (1);
Cela sera expliqué par le moteur comme:
fucntion () {};
(1); // Expression de valeur unique
Par conséquent, la détection de syntaxe est passée ...