500 votes

Quel est le but d'une auto de l'exécution de la fonction en javascript?

En javascript, quand vous voulez l'utiliser:

(function(){
    //Bunch of code...
})();

au cours de cette:

//Bunch of code...

470voto

Ken Browning Points 15689

Son tout sur la variable de portée. Les Variables déclarées dans l'en soi de l'exécution de la fonction sont, par défaut, uniquement disponible pour le code à l'intérieur de soi de l'exécution de la fonction. Cela permet de code à écrire sans se préoccuper de la manière dont les variables sont nommées dans d'autres blocs de code javascript.

32voto

M A Hossain Tonu Points 631

Auto-invocation (aussi connu comme auto-invocation) est une fonction exécute immédiatement après son définition. C'est un modèle de base et sert de base pour de nombreux d'autres modèles de JavaScript développement.

Je suis une grande fan :) parce que:

  • Il garde un code à un minimum
  • Il met en place la séparation de comportement de présentation
  • Il fournit un système de verrouillage qui empêche les conflits de noms

Énormément – (Pourquoi vous devez dire à son bon?)

  • Il s'agit de la définition et de l'exécution d'une fonction tout à la fois.
  • On pouvait avoir l'auto-exécution d'une fonction retourne une valeur et passer à la fonction en tant que paramètre à une autre fonction.
  • C'est bon pour l'encapsulation.
  • Il est également bon pour le bloc de portée.
  • Oui, vous pouvez placer toutes vos .fichiers js dans une auto-exécution de la fonction et peuvent empêcher l'espace de noms global de la pollution. ;)

De plus ici.

21voto

Christoph Points 64389

Namespacing. JavaScript étendues sont fonction du niveau.

14voto

David W. Keith Points 1111

Je ne peux pas croire à aucune des réponses mention implicite globals.

L' (function(){})() construire ne protège pas contre l'implicite global, qui pour moi est le plus grand souci, voir http://yuiblog.com/blog/2006/06/01/global-domination/

Fondamentalement, le bloc fonction permet de s'assurer que tous les dépendants "les variables globales" vous avez définis sont confinés à votre programme, il ne vous protège pas contre la définition implicite globals. JSHint ou elle ce que vous voulez vraiment défendre contre.

La plus concise var App = {} syntaxe fournit un niveau de protection similaire, et peut être enveloppé dans le bloc de fonction lors de sur "public" des pages. (voir Ember.js ou SproutCore pour des exemples du monde réel de bibliothèques qui utilisent cette construction)

Aussi loin que l' private propriétés, ils sont un peu surfaite, sauf si vous êtes la création d'un cadre public ou à la bibliothèque, mais si vous avez besoin de les mettre en œuvre Douglas Crawford a quelques bonnes idées.

7voto

chaos Points 69029

La portée de l'isolement, peut-être. De sorte que les variables à l'intérieur de la déclaration de la fonction ne pas polluer l'extérieur de l'espace de noms.

Bien sûr, sur la moitié de la JS implémentations, ils seront de toute façon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X