2014-04-08 55 views
0

我需要创建一个带有回调函数的函数,但是我找到的解决方案不允许设置函数。如何在JavaScript中传递函数作为参数?

我会解释:

这是解决方案,我发现:

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 */ 

一些想法?

谢谢

+0

你的代码适合我。有一个错误:'myFunction(callbackFunction())'应该是:'myFunction(callbackFunction)' – phylax

+2

代码工作正常:http://jsfiddle.net/5KnGN/ – Andy

+0

它以什么方式不起作用?这是一个非常简单的代码snippit,应该按预期工作。 – stephenbayer

回答

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

不,它不需要。至少不以你认为的方式。这就是:

  1. 调用callbackFunction
  2. 薪火结果callbackFunctionmyFunction

你可能从myFunction内得到一个错误,当它试图调用callback,因为这不是一个函数。但是你忽略了这一点,因为你看到了alert()并认为它有效。在调用myFunction之前发生了alert()

你希望把它作为一个函数的引用,而不是一个函数调用:

myFunction(callbackFunction) /* this works */ 

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


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

You sure about that?如果这确实是“不工作”你就必须要更多的给你不与我们分享的问题,因为代码工作原样。

+0

是的,你是对的。我发现了这个问题,非常感谢! – Luca

相关问题