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

时间:2011-10-13 13:27:17

标签: javascript settimeout

function fun(x){alert(x);}

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

所以当fun(x)真正运行时,会发出什么警告。

如果结果为2,则如何使x为1。

由于某种原因,我无法使用全局变量。

THX


更新 事实上,我需要在for(){}中使用这样的东西;

所以也许最好的方法就是这样:

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

2 个答案:

答案 0 :(得分:1)

您可以使用额外的范围。这适用于每个浏览器。

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

i=2;

答案 1 :(得分:0)

function fun(x){alert(x);}

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