2011-10-13 108 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; 
相關問題