如何在javascript中传递函数作为参数?

时间:2014-04-08 15:31:32

标签: javascript function parameters callback

我需要使用回调函数创建一个函数,但我找到的解决方案不允许设置函数。

我将解释:

这是我发现的解决方案:

function callbackFunction()
{
   alert("hello world");
}

function myFunction(callback)
{
   callback()
}

myFunction(callbackFunction())  /* this works */

这就是我需要的:

function myFunction(callback)
{
   callback()
}

myFunction(function(){alert("hello world");});  /* this doesn't work  */

一些想法?

谢谢

1 个答案:

答案 0 :(得分:2)

myFunction(callbackFunction())  /* this works */

不,它没有。至少不是你认为它的方式。这是:

  1. 调用callbackFunction
  2. callbackFunction结果传递给myFunction
  3. 您尝试调用myFunction时可能会在callback内收到错误,因为它不是函数。但是你忽略了这一点,因为你看到alert()并认为它有效。 alert()myFunction被调用之前发生。

    您希望将其作为函数引用传递,而不是函数调用:

    myFunction(callbackFunction)  /* this works */
    

    这将产生相同的可见结果(alert()),但是按照预期的操作顺序而没有错误。


    myFunction(function(){alert("hello world");});  /* this doesn't work  */
    

    You sure about that?如果确实如此"不工作"对于你,那么你必须更多地解决你不与我们分享的问题,因为该代码按原样运作。