我正在尝试在调用variablefunction中重新使用callback,但是它无法按照我认为的方式工作;

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会被定义。

我哪里错了?

最佳答案

函数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声明为全局范围,当前它在使它成为本地函数中。

希望这可以帮助。

10-06 00:10