我知道我可以将函数用作javascript中的参数。我也可以运行作为参数给出的函数。这是一个示例:
function myfunction(param1, callbackfunction)
{
//do processing here
callbackfunction();
}
如果我想提供一个匿名函数,该函数将如何在外部函数中运行?
例如具有
之类的功能setTimeout(function(){
})
该匿名函数如何不带名称直接运行?
答案 0 :(得分:8)
您不需要名称即可调用函数。名称仅在调试工具中有用(例如,在检查堆栈跟踪时)。
要调用一个函数,您需要一个可解析为该函数的表达式,您可以使用()
来跟随该表达式。
您要将函数作为第一个参数传递给setTimeout
,因此它将被存储在该函数的第一个参数中。然后setTimeout
的内部人员对其进行调用。
您对代码执行相同的操作,只是它是第二个参数。
myfunction("some param", function () { /* ... */ }) ;
答案 1 :(得分:2)
也许这更清楚了?
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)