如果变量在settimeout之后但在它真正运行之前发生了变化怎么办?

what if variable changes after settimeout but before it really run

本文关键字:发生了 怎么办 运行 变化 settimeout 变量 之后 如果      更新时间:2023-09-26
function fun(x){alert(x);}
var i=1;
var t=setTimeout(function(){ fun(i) },10000);
i=2;

所以当fun(x)真正运行时,什么将被提醒。

如果结果是2,如何使x等于1

由于某些原因,我不能使用全局变量。

thx


更新事实上,我需要在for(){} thing;

中使用这样的东西

所以最好的方法是这样:

setTimeout("testDisplay(" + aa + "," + bb + ")",1000);  

您可以使用额外的作用域。这在所有浏览器中都有效。

var i=1, t;
(function () {
   var tmp = i;
   t=setTimeout(function(){ fun(tmp) },10000);
})();
i=2;
function fun(x){alert(x);}
var i=1;
var iCopy = i;
var t=setTimeout(function(){ fun(iCopy) },10000);
i=2;