Maison > interface Web > js tutoriel > Pourquoi les expressions de fonction immédiatement invoquées (IIFE) doivent-elles être définies et invoquées sur une seule ligne en JavaScript ?

Pourquoi les expressions de fonction immédiatement invoquées (IIFE) doivent-elles être définies et invoquées sur une seule ligne en JavaScript ?

Mary-Kate Olsen
Libérer: 2024-12-04 15:29:15
original
543 Les gens l'ont consulté

Why Must Immediately Invoked Function Expressions (IIFEs) Be Defined and Invoked on a Single Line in JavaScript?

Pourquoi est-il nécessaire d'invoquer une fonction anonyme sur la même ligne ?

En JavaScript, des fonctions anonymes peuvent être définies et immédiatement invoquées sur la même ligne. Cette technique est couramment utilisée pour créer des fermetures ou modulariser du code. Cependant, il peut être difficile de comprendre pourquoi les deux étapes doivent être effectuées sur la même ligne.

Expressions de fonction et déclarations

Les fonctions JavaScript peuvent être définies à l'aide de deux méthodes : les expressions de fonction et les déclarations de fonction. Les déclarations de fonction, comme la fonction sum(a, b) { ... }, créent des fonctions nommées qui font partie de la portée globale. Les expressions de fonction, en revanche, créent des fonctions anonymes qui sont généralement stockées dans des variables ou utilisées comme rappels.

Invoquer une fonction anonyme

Pour exécuter une fonction anonyme, vous devez l'envelopper dans parenthèses, par exemple (function() { ... })(). Cette syntaxe vous permet d'invoquer immédiatement la fonction sans avoir à l'attribuer à une variable.

Invocation sur la même ligne

Si vous essayez de définir et d'invoquer une fonction anonyme sur des lignes distinctes, vous obtenir une erreur :

(
function (msg){
    alert(msg);
} // missing semicolon
); // semicolon ends the statement
('SO');
Copier après la connexion

Cela est dû au fait que le point-virgule après la définition de la fonction termine l'instruction, laissant la ligne suivante comme une expression de parenthèses autonome. Pour résoudre ce problème, vous devez supprimer le point-virgule et appeler la fonction sur la même ligne :

(function (msg){
    alert(msg);
})('SO');
Copier après la connexion

Explication

La raison de cette exigence provient du comportement d'insertion du point-virgule de JavaScript. S'il manque un point-virgule à la fin d'une instruction, JavaScript en insère automatiquement un. Dans l'exemple ci-dessus, lorsque vous supprimez le point-virgule après la définition de la fonction, JavaScript en insère un à la fin de la ligne, mettant ainsi fin à l'instruction de fonction.

La fermeture

L'invocation immédiate du la fonction anonyme sert également à créer une fermeture. Une fermeture est une fonction qui a accès aux variables de sa portée parent, même une fois l'exécution de la fonction parent terminée. Dans l'exemple ci-dessus, la fonction anonyme a accès à la variable msg, qui serait normalement hors de portée une fois le corps de la fonction terminé.

Conclusion

Invoquer une fonction anonyme sur la même ligne est une technique qui permet la création de fermetures et de code modulaire. Il est essentiel de comprendre la différence entre les expressions de fonction et les déclarations, ainsi que le comportement d'insertion des points-virgules de JavaScript, pour éviter les erreurs courantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal