2011-10-13 105 views
0
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); 

回答

1

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

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

i=2; 
0
function fun(x){alert(x);} 

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