所以我正在制作一个必须延迟的功能,我需要旧值而不是新值
test='old';
setTimeout( function(test) {alert(test)}, 1000,[test]);
test='new';
所以我正在制作一个必须延迟的功能,我需要旧值而不是新值
test='old';
setTimeout( function(test) {alert(test)}, 1000,[test]);
test='new';
一个不依赖于将参数传递给回调的能力的通用解决方案(如MDN 文档setTimeout
中所述,这在 IE 中不起作用)是使用IIFE创建新范围并捕获变量的当前值:
test='old';
(function(test) {
setTimeout(function() {
alert(test)
}, 1000);
}(test));
test='new';
这适用于任何类型的回调。另请参阅循环内的 JavaScript 闭包——简单实用的示例。