所以我正在制作一个必须延迟的功能,我需要旧值而不是新值
test='old';
setTimeout( function(test) {alert(test)}, 1000,[test]);
test='new';
答案 0 :(得分:2)
不依赖于setTimeout
将参数传递给回调的能力的一般解决方案(在MDN documentation中解释的在IE中不起作用),是使用{{3创建一个新的范围并捕获变量的当前值:
test='old';
(function(test) {
setTimeout(function() {
alert(test)
}, 1000);
}(test));
test='new';
这适用于任何类型的回调。另请参阅IIFE。