2010-09-13 39 views
2

setTimeout和匿名函數爲什麼這並不在Firebug控制檯工作:問題在JavaScript中

function(s,e) { 
setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 
} 

雖然這確實:

setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 

回答

6

它不起作用,因爲你不調用其他匿名函數來包裝你的setTimeout,它是如何實際調用的?

你必須要麼名字,並把它叫做:

function someFunc(s,e) { 
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 
} 
someFunc(); 

或者在括號包裹,並立即把它

(function(s,e) { 
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 
})(); 

或名稱,並調用它的文檔加載:

JS

function someFunc(s,e) { 
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 
} 

HTML

<body onload='someFunc'> 
.... 
2

因爲你不是要求在第一功能例。你需要調用這個函數,你可以這樣做。該函數的括號用於防止語法錯誤:函數表達式(這是您的示例)獨立不是一個有效的語句。最後的括號稱爲函數。

(function(s,e) { 
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 
})();