J'essaie de comprendre comment la portée variable fonctionne lorsque vous liez un événement.Définition et étendue de la variable JavaScript
L'exemple suivant fonctionne très bien:
function clickHandler() {
alert(foo);
}
var foo = true;
$('div').on({
'click': clickHandler
});
Voir: http://jsfiddle.net/OliverJAsh/7fM5U/4/
Cependant, quand je fais ce simple changement, il ne fonctionne plus:
function clickHandler() {
alert(foo);
}
(function() {
var foo = true;
$('div').on({
'click': clickHandler
});
}());
Voir: http://jsfiddle.net/OliverJAsh/7fM5U/3/
Comment feriez-vous à propos de faire la sec exemple de travail? Puis-je faire n'importe quoi avec .call
? Je me demande ceci parce que la fonction est appelée là où la variable est définie, donc je veux qu'elle ait accès à cela.
MISE À JOUR:
Je comprends pourquoi il ne peut pas accéder à la variable - mais parce que la fonction est appelée à partir duquel la variable est définie, je me suis demandé comment je pourrais le faire fonctionner, sans déplacer le champ d'application de choses. Je pense que je pose des questions sur la méthode .call
.
Merci pour votre réponse, mais ce n'est pas une option dans le script que j'écris. Y at-il autre chose que je puisse faire? –
@OliverJosephAsh réponse mise à jour. –