我有一个功能:
function func1(callback){
var num = 11111;
callback.call(num);
}
现在我称之为:
func1(function(num){
console.log("num= " + num);
});
但我知道num
未定义
什么可能是错的?
答案 0 :(得分:1)
因为当您使用call
来调用回调函数时,num
被设置为被调用函数中的隐式this
,请更改为:
callback(num);
而不是callback.call(num);
。
为乐趣召唤提供的价值。请注意,这可能不是方法看到的实际值:如果方法是非严格模式代码中的函数,则null和undefined将替换为全局对象,并且原始值将被装箱。
答案 1 :(得分:1)
Function.call()
将调用具有传递引用范围的函数,您只需要调用它不具有任何特定范围
function func1(callback){
var num = 11111;
callback(num);
}
或者如果你想在任何范围内调用,第一个参数总是引用,所以在那之后传递你的参数,例如:
callabck.call(reference, param1, param2);
callback.apply(reference, [param1, param2]);