如何用参数调用回调函数?

时间:2013-11-24 12:30:42

标签: javascript

我有一个功能:

function func1(callback){
   var num = 11111;
   callback.call(num);
}

现在我称之为:

 func1(function(num){
    console.log("num= " + num);
 });

但我知道num未定义 什么可能是错的?

2 个答案:

答案 0 :(得分:1)

因为当您使用call来调用回调函数时,num被设置为被调用函数中的隐式this,请更改为:

callback(num);

而不是callback.call(num);

来自MDN Documentation

  

为乐趣召唤提供的价值。请注意,这可能不是方法看到的实际值:如果方法是非严格模式代码中的函数,则null和undefined将替换为全局对象,并且原始值将被装箱。

答案 1 :(得分:1)

Function.call()将调用具有传递引用范围的函数,您只需要调用它不具有任何特定范围

function func1(callback){
   var num = 11111;
   callback(num);
}

或者如果你想在任何范围内调用,第一个参数总是引用,所以在那之后传递你的参数,例如:

callabck.call(reference, param1, param2); 
callback.apply(reference, [param1, param2]);
相关问题