Javascript设置超时

Javascript设置超时,javascript,Javascript,你能告诉我为什么这样做吗: PageMethods.UpdateForcedDisposition(forcedDisposition, a.value, SucceededCallback, FailedCallback); 什么时候没有 setTimeout("PageMethods.UpdateForcedDisposition(" + forcedDisposition + "," + a.value + ", SucceededCallback, FailedCallback);",

你能告诉我为什么这样做吗:

PageMethods.UpdateForcedDisposition(forcedDisposition, a.value, SucceededCallback, FailedCallback);
什么时候没有

setTimeout("PageMethods.UpdateForcedDisposition(" + forcedDisposition + "," + a.value + ", SucceededCallback, FailedCallback);", 1000);
有趣的是,类似的调用适用于:


…我被难住了

避免将字符串传递给
setTimeout
。在可能的情况下,使用匿名函数:

window.setTimeout(function () {
    PageMethods.UpdateForcedDisposition(
        forcedDisposition, 
        a.value, 
        SucceededCallback, 
        FailedCallback
    );
}, 1000);

带有字符串的
setTimeout
在全局范围内执行。如果试图引用当前作用域中的变量,则会出现错误。

避免将字符串传递给
setTimeout
。在可能的情况下,使用匿名函数:

window.setTimeout(function () {
    PageMethods.UpdateForcedDisposition(
        forcedDisposition, 
        a.value, 
        SucceededCallback, 
        FailedCallback
    );
}, 1000);
带有字符串的
setTimeout
在全局范围内执行。如果试图引用当前作用域中的变量,则会出现错误