我正在尝试在调用 callback
的 function
中重新使用 variable
,但它并不像我想的那样工作它应该;
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);
}
}
我无法理解这是否是与闭包相关的问题,但起初我预计 callingfn
中的 someval
会被定义。
我哪里错了?
最佳答案
函数 fn()
与 a()
不同,它接收 fn
作为参数。
您可以发送 someval
作为参数。
another()(); //=> logs "somevalue"
callingfn(); //=> logs " someval is not defined"
function a(fn){
var someval = "some-value";
return fn(someval);
}
function callingfn(){
return a.call(this, function(someval){
console.log(someval)
})
}
function another(){
var sv = "somevalue";
return function(){
console.log(sv);
}
}
或者简单地将 var someval
声明为全局范围,目前它在一个使其成为本地的函数中。
希望这对您有所帮助。
关于Javascript:回调中的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29540471/