2014-04-08 91 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

相關問題