如果settimeout之后的变量发生变化,但在真正运行之前会发生什么变化
问题描述:
function fun(x){alert(x);}
var i=1;
var t=setTimeout(function(){ fun(i) },10000);
i=2;
因此,当fun(x)真正运行时,会发出警报。如果settimeout之后的变量发生变化,但在真正运行之前会发生什么变化
如果结果是2,如何使X为1
出于某种原因,我不能使用全局变量。
THX
更新 事实上,我需要使用这样的事情在for(){}东西;
所以也许最好的办法是这样的:
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;