Maison > interface Web > js tutoriel > Pourquoi les parenthèses créent-elles des fonctions anonymes encapsulées en JavaScript ?

Pourquoi les parenthèses créent-elles des fonctions anonymes encapsulées en JavaScript ?

Mary-Kate Olsen
Libérer: 2024-12-16 10:41:11
original
379 Les gens l'ont consulté

Why Do Parentheses Create Encapsulated Anonymous Functions in JavaScript?

La syntaxe des fonctions anonymes encapsulées

En JavaScript, les fonctions anonymes encapsulées sont créées en plaçant une fonction entre parenthèses et en l'exécutant immédiatement :

(function(){
    // code here
})();
Copier après la connexion

Cette syntaxe est utilisée pour éviter d'encombrer la portée globale avec des variables et fonctions.

Pourquoi cela fonctionne : (function(){})();

Lorsque des parenthèses entourent une déclaration de fonction, le résultat est évalué comme une expression de fonction. Les expressions de fonction autorisent les noms facultatifs, cette expression peut donc s'exécuter sans nom.

Pourquoi cela ne fonctionne pas : function(){}();

Activé d'un autre côté, lorsqu'il n'y a pas de parenthèses, JavaScript l'analyse comme une déclaration de fonction. Les déclarations de fonction nécessitent un identifiant de nom, qui est manquant dans ce cas.

Déclaration de fonction vs expression

  • Déclaration de fonction : identifiant de fonction (paramètres) { . ..>
  • Expression de fonction : (identifiant de fonction (paramètres) { ... })

Les expressions de fonction peuvent être nommé ou sans nom, tandis que les déclarations de fonction doivent avoir un nom.

Parenthèses et contexte

Les parenthèses indiquent que le code ci-joint est une expression. Qu'il s'agisse d'une déclaration de fonction ou d'une expression dépend du contexte. Les déclarations de fonction peuvent apparaître dans la portée globale ou dans le corps d'une autre fonction, tandis que les expressions de fonction ne peuvent apparaître que dans des expressions.

Exemple d'ambiguïté

0, function foo() {} // Function Expression
function foo() {} // Function Declaration
Copier après la connexion

Dans cet exemple , l'analyseur détermine s'il s'agit d'une déclaration de fonction ou d'une expression basée sur le contexte. L'expression peut apparaître dans des expressions, tandis que la déclaration ne peut apparaître qu'à des emplacements spécifiques.

Pourquoi les fonctions dans les blocs doivent être évitées

Les fonctions à l'intérieur des blocs peuvent conduire à un comportement inattendu en raison de problèmes de portée variable. Par exemple :

if (true) {
  function foo() {
    alert('true');
  }
} else {
  function foo() {
    alert('false!');
  }
}

foo(); // true? false? why?
Copier après la connexion

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