如何运行作为参数给出的匿名函数

时间:2019-04-15 12:18:10

标签: javascript

我知道我可以将函数用作javascript中的参数。我也可以运行作为参数给出的函数。这是一个示例:

function myfunction(param1, callbackfunction)
{
    //do processing here
    callbackfunction();
}

如果我想提供一个匿名函数,该函数将如何在外部函数中运行?

例如具有

之类的功能
setTimeout(function(){
})

该匿名函数如何不带名称直接运行?

2 个答案:

答案 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)