Passage d'arguments à une IIFE
Quelle est la syntaxe correcte pour le passage d'arguments à une IIFE stockée dans une variable?
Exemple ci-dessous me dit que foo
n'est pas défini, peu importe si j'appelle la fonction ou pas:
var bar = (function(foo){
return {
getFoo: function(){
return foo;
}
}
})(foo);
console.log(bar.getFoo(1));
Vous devez vous connecter pour publier un commentaire.
La IIFE est immédiatement invoquée. Vous êtes de passage à
foo
pour le moment de l'invocation, et je suppose que c'est pas défini.Ce qui est stocké dans
bar
n'est pas le IIFE, mais l'objet retourné par la IIFE, qui n'a rien à voir avec foo (plus d'avoir accès à elle par la fermeture). Si vous voulez foo être1
, ne pas passer cette valeur àgetFoo
, mais à la IIFE lui-même:Si vous voulez un getter et un setter (en fait, les getter/setter-comme des fonctions), utilisez ceci:
bar(1)
de fairefoo === 1
?La
foo
que vous êtes de passage à la IIFE n'est pas défini. Vous devez définirfoo
à l'extérieur de la variable d'environnement premier.Ou tout simplement le définir directement dans l'argument de la position.
Notez également que vous êtes le passage d'une valeur à
getFoo()
, mais vous n'êtes pas en train de l'utiliser dans la méthode.C'est le
foo
que vous êtes de passage dans la fonction.Pourquoi ne pas tout simplement:
Fonctionne pour moi.