Я пытаюсь повторно использовать variable
внутри function
, который вызывает callback
, но он не работает так, как мне кажется.Javascript: переменная область в обратном вызове
another()(); //=> logs "somevalue"
callingfn(); //=> logs " someval is not defined"
function a(fn){
var someval = "some-value";
return fn();
}
function callingfn(){
return a.call(this, function(){
console.log(someval)
})
}
function another(){
var sv = "somevalue";
return function(){
console.log(sv);
}
}
Я не могу понять, если это проблема замыкания связанных, но сначала я ожидал, что someval
в callingfn
была бы определена.
Где я ошибаюсь?
'someval' является локальной по отношению к функции' а() 'и будет доступна только внутри' а() 'и любые замыкания внутри' а () '(в коде вы не указали). – techfoobar
Uhm, справа. Мне было интересно, есть ли способ сделать обратный вызов закрытием в 'a()' – steo
Это невозможно, так как это будет обратный вызов, он должен быть определен внутри 'a()' – techfoobar