-4

所以我正在制作一个必须延迟的功能,我需要旧值而不是新值

test='old';

setTimeout( function(test) {alert(test)}, 1000,[test]);

test='new';
4

1 回答 1

2

一个不依赖于将参数传递给回调的能力的通用解决方案(如MDN 文档setTimeout中所述,这在 IE 中不起作用)是使用IIFE创建新范围并捕获变量的当前值:

test='old';

(function(test) {
    setTimeout(function() {
        alert(test)
    }, 1000);
}(test));

test='new';

这适用于任何类型的回调。另请参阅循环内的 JavaScript 闭包——简单实用的示例

于 2013-08-04T21:38:22.147 回答