8
votes

Quand dois-je utiliser la syntaxe "(fonction () {...}) ();"?

Ma requête est utilisée dans les cas "(fonction () {...}) ();" Étant donné que je ne suis pas un plugin. Par exemple, http://piecesofrakesh.blogspot.com/2009 /03/downloading-javascript-files-in.html " xxx

ou xxx

merci. Merci.


6 commentaires

Quelle est exactement la question?


"Étant donné que je ne suis pas un plugin" est mignon :-)


Désolé, j'écris très mal en anglais. Le script n'est pas un plugin, auquel cas il est utile d'utiliser cette structure "(fonction () {...} ();"


D'accord, j'espère que lorsque je dois utiliser une langue autre que l'anglais, les gens ont de la patience pour moi ....


Je pense C'est un duplicatin de cette question: stackoverflow.com/questions/423228/... - Différence entre (fonction () {}) (); et fonction () {} ();


@andres Descalzo: Je ne voulais pas dire que cela offensive; vraiment pas besoin d'être désolé. Je pensais juste que c'était une mignon expression.


4 Réponses :


24
votes

Ceci est fait pour éviter de nommer des conflits.

Lorsque vous déclarez une fonction, cette fonction a son propre espace de noms pour les variables. En enveloppant le code dans une fonction immédiatement invoquée, vous évitez d'écraser les variables globales avec vos propres valeurs.

Dans ce cas, s et SC sont attribués une valeur. Si vous avez fait cela à la portée globale et que d'autres scripts utilisaient déjà des variables avec ces noms pour un but différent, cela entraînerait l'échec de ces autres scripts. En introduisant la nouvelle portée, les identifiants s et SC se réfèrent maintenant à différentes variables (localement) que les variables nommées s et SC qui existe à la portée globale.


0 commentaires


2
votes

idiom (fonction () {...}) (); limite la portée de vos variables. Donc, dans le premier cas s (et SC , tp etc.) ne sera pas accessible dans un corps de fonction extérieur. Dans le deuxième cas, vous pourrez y accéder. Donc (fonction () {...}) (); vous empêche de pollution des espaces de noms. Que vous ayez besoin de cette question. Vous pouvez aimer Google quelque chose comme "Scope JavaScript". Il y a une belle article .


0 commentaires

3
votes

(fonction () {...}) (); code> est une fonction anonyme auto-invoquant, c'est-à-dire une fonction sans nom qui est exécuté tout de suite. Étant donné que JavaScript a une portée de fonctionnement, l'utilisation de fonctions anonymes auto-invoquant limite la portée des variables à l'intérieur de la fonction elle-même, évitant ainsi tout conflit pouvant survenir autrement.

in jQuery, une fonction anonyme auto-invoquant est utilisée assez souvent. Par les auteurs de plugin pour référencer l'objet JQuery avec le symbole $ code> à l'intérieur de la fonction. Par exemple P>

(function($) {

    /* plugin code here */

})(jQuery);


0 commentaires