有一個問題,不知道我怎麼能給由ClickSimMove func(它返回具有2個值的數組)的ClickSimClick函數參數。setTimeout給函數參數從另一個函數
下面的代碼表示crd在setTimeout上未定義。
var crd = plugin().ClickSimMove();
setTimeout("plugin().ClickSimClick(crd[0], crd[1])", 1000);
有一個問題,不知道我怎麼能給由ClickSimMove func(它返回具有2個值的數組)的ClickSimClick函數參數。setTimeout給函數參數從另一個函數
下面的代碼表示crd在setTimeout上未定義。
var crd = plugin().ClickSimMove();
setTimeout("plugin().ClickSimClick(crd[0], crd[1])", 1000);
傳遞一個函數,而不是一個字符串:
var crd = plugin().ClickSimMove();
setTimeout(function() {
plugin().ClickSimClick(crd[0], crd[1]);
}, 1000);
當你傳遞一個字符串,它的評價,因爲這將在全球範圍內eval
,失去所有訪問本地變量。匿名函數允許您引用範圍內的任何變量。
var crd = plugin().ClickSimMove();
setTimeout(function(){
plugin().ClickSimClick(crd[0], crd[1]);
}, 1e3);
如果可能的話,避免將字符串setTimeout
/setInterval
--use一個匿名函數來代替。特別是如果你發現自己連接變量來創建該字符串,那麼可以用某種注入或畸形的組件快速地運行以解決問題。
這取決於您希望調用setTimeout時的crd [0]值還是超時時觸發的值。 – 2013-04-07 02:14:03