Javascript中setTimeout和匿名函数的问题

时间:2010-09-13 10:15:35

标签: javascript anonymous-function

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

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

虽然这样做:

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

2 个答案:

答案 0 :(得分:6)

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

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

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

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

(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'>
....

答案 1 :(得分:2)

因为您没有在第一个示例中调用该函数。您需要调用该函数,您可以执行以下操作。函数周围的括号用于防止语法错误:函数表达式(这是您的示例)本身不是有效语句。最后的括号调用函数。

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