我知道在JavaScript中可以将函数作为参数传递。同时,也可以运行作为参数给定的函数。以下是一个示例:
function myfunction(param1, callbackfunction)
{
//do processing here
callbackfunction();
}
如果我想提供一个匿名函数,它将如何在外部函数内运行?
例如,使用以下函数:
setTimeout(function(){
})
这个匿名函数是如何在没有名称的情况下直接运行的?
我知道在JavaScript中可以将函数作为参数传递。同时,也可以运行作为参数给定的函数。以下是一个示例:
function myfunction(param1, callbackfunction)
{
//do processing here
callbackfunction();
}
setTimeout(function(){
})
调用函数时不需要名称。名称只有在调试工具(例如查看堆栈跟踪)中时才有用。
要调用函数,您需要一个解析为函数的表达式,然后可以跟随 ()
。
您将函数作为第一个参数传递给 setTimeout
,因此它被存储在该函数的第一个参数中。 setTimeout
的内部随即调用了它。
您在自己的代码中也是这样做的,只不过是作为第二个参数。
myfunction("some param", function () { /* ... */ }) ;
function callFunction(param1, callbackfunction) {
console.log('callFunction', param1)
//do processing here
callbackfunction(param1);
}
function myCustomCallback(param) {
console.log('myCustomCallback', param)
}
setTimeout(callFunction.bind(this, 'one', myCustomCallback ), 1000)
setTimeout(callFunction.bind(this, 'two', function(p) {alert(p)} ), 2000)
myfunction("something", function () { });
来调用你的函数。你的第一个代码片段相当于settimeout函数的内部。 - ADyson