我试图在javascript中理解回调函数。
有一个像
这样的功能function load() {
var func = function(data){
///
};
}
任何人都可以向我解释参数“data”的返回位置,因为我没有看到文件中声明的任何变量。
答案 0 :(得分:3)
在JavaScript中,函数为first class objects。您可以将它们存储在对象(变量)中,并将它们作为参数传递给函数。每个函数实际上都是Function
对象。
在该示例中,您没有回调函数。将函数作为参数传递给另一个函数时,你就有了一个。
这是一个在准备就绪时调用回调函数的函数:
function load (ready_callback) {
// do some stuff
ready_callback();
}
可以按如下方式调用:
function callback () {
alert('Ready');
}
load(callback);
或者:
var callback = function () {
alert('Ready');
}
load(callback);
或者:
load(function () {
alert('Ready');
});
以上三个例子非常相同。
回调函数通常用于事件处理和异步方法。一个例子是setTimeout()
方法,它在超时到期时调用回调函数:
var timerCallback = function () {
alert('Timeout Expired!');
}
setTimeout(timerCallback, 5000); // Set the timeout to 5 seconds