Я пытаюсь понять, как переменная область видимости работает, когда вы связываете событие.
Следующий пример отлично работает:
function clickHandler() {
alert(foo);
}
var foo = true;
$('div').on({
'click': clickHandler
});
См .: http://jsfiddle.net/OliverJAsh/7fM5U/4/
Однако, когда я делаю это простое изменение, оно больше не работает:
function clickHandler() {
alert(foo);
}
(function () {
var foo = true;
$('div').on({
'click': clickHandler
});
}());
См .: http://jsfiddle.net/OliverJAsh/7fM5U/3/
Как бы вы сделали, чтобы второй пример работал?Могу ли я что-нибудь сделать с .call
?Мне это интересно, потому что функция вызывается там, где определена переменная, поэтому я хочу, чтобы она имела к ней доступ.
ОБНОВЛЕНИЕ:
Я понимаю, почему этоя не могу получить доступ к переменной - но поскольку функция вызывается из того места, где определена переменная, мне было интересно, как я мог бы заставить ее работать, не меняя при этом объема вещей.Я думаю, что спрашиваю о методе .call
.