我试图在调用回调函数
的函数
内重新使用变量
,但它并不像我想象的那样工作;
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
已被定义。
我错在哪里了?
someval
是局部变量,属于函数a()
的作用域,只能在a()
函数内及其内部的闭包中访问(在您发布的代码中没有闭包)。 - techfoobara()
中。 - steoa()
内部定义。 - techfoobar