Javascript中setTimeout和匿名函数的问题

Dan*_*iev 2 javascript anonymous-function

为什么这在Firebug控制台中不起作用:

function(s,e) {
setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100)
}
Run Code Online (Sandbox Code Playgroud)

虽然这样做:

setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100)
Run Code Online (Sandbox Code Playgroud)

Kri*_*ard 6

它不起作用,因为你没有调用包装你的setTimeout的另一个匿名函数,它是如何实际调用的?

您必须为其命名并调用它:

function someFunc(s,e) {
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100)
}
someFunc();
Run Code Online (Sandbox Code Playgroud)

或者将其包裹在parens中并立即调用它

(function(s,e) {
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100)
})();
Run Code Online (Sandbox Code Playgroud)

或者命名并在文档加载时调用它:

JS:

function someFunc(s,e) {
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100)
}
Run Code Online (Sandbox Code Playgroud)

HTML

<body onload='someFunc'>
....
Run Code Online (Sandbox Code Playgroud)