2010-01-25 3 views
9

Je suis relativement nouveau sur Javascript. Je comprends le concept de fonctions anonymes - mais les fermetures semblent moins claires. La similitude entre les deux (dans mon esprit au moins), est confuse.Quelqu'un peut-il expliquer la différence entre les fonctions de fermeture et les fonctions anonymes?

Quelqu'un pourrait-il expliquer la différence? (de préférence, avec un extrait de code, pour illustrer les points plus clairement).

+0

Jetez un oeil ici: http://stackoverflow.com/questions/2622421/what-are-the-use -cases-for-closureures-callback-functions-in-javascript –

Répondre

2

Je l'ai expliqué ici: The Zen of Closures.

Fondamentalement, sans entrer dans les détails techniques:

  • une fonction anonyme est une fonction sans nom (qui peut être attribué à des variables).
  • une fermeture est une sorte de variable globale privée
6

La différence importante est qu'une fermeture capture la portée qu'elle a été définie dans.

En d'autres termes, une fermeture peut accéder à des variables et leur état même bien qu'ils appartiennent à la portée parentale de la fermeture (par exemple, la fonction dans laquelle la fermeture a été créée). Cela permet aux fermetures de capturer et de "transporter" l'état de l'application autour de votre programme.

Une fonction anonyme ne peut pas faire cela; sa portée est limitée aux variables définies à l'intérieur de son corps et de sa signature (c'est-à-dire, ses paramètres).

EDIT: Juste pour clarifier: En JavaScript, il est particulièrement flou car il n'y a pas de construction de langage appelée fermeture. Vous utiliseriez toujours une fonction anonyme pour cela. Je ne faisais référence qu'à la différence conceptuelle.

Questions connexes