如何将window.setTimeout分配给动态变量?

时间:2013-07-05 08:59:39

标签: javascript

我需要将window.setTimeout分配给动态制作的GLOBAL变量或对象,例如:

$n = 1
var variable[$n] = window.setTimeout( function () { /*somecode*/ },2000)

这不起作用。
也行不通:

var eval(variable+$n) = window.setTimeout( function () { /*somecode*/ },2000)

但没有“var”,但我需要全局变量,所以我需要“var”范围。

什么是可能的解决方案?

3 个答案:

答案 0 :(得分:1)

你可以像这样实现

variable = [];

variable[1] = window.setTimeout( function () { alert('hi') }, 2000);

// This will alert 'hi' in 2 seconds 

或者如果您希望能够像setTimeout一样调用function,则可以执行此操作

variable = [];

variable[1] = function(){ window.setTimeout( function () { alert('hi') },2000) };

// This won't alert 'hi' until you do this 

variable[1]();

您遇到的问题是variable不是array所以如果您想按自己的方式进行操作,则必须先variable array这样var ,全球?只需删除$n = 1 variable = []; variable[$n] = window.setTimeout( function () { alert('hi') },2000);

即可
{{1}}

答案 1 :(得分:0)

要解决全局变量,您不应使用var 。使用var重新定义该范围内的变量。

让我用一个不同的例子向你解释:

var i = 2; 

function show() {
   alert(i); // This will show 2
}

但是在这个例子中:

var i = 2;

function show() {
   var i = 4; //This defines a local variable called "i" to be used inside function only
   alert(i); // Will show 4;
}
alert(i); // But this will still show 2

因此,请在没有var

的情况下使用它
$n = 1
variable[$n] = window.setTimeout( function () { /*somecode*/ },2000)

答案 2 :(得分:0)

不确定是否要引用setTimeout或使用代码执行setTimeout,这可能会给你一个想法:

window.myvar = function(){window.setTimeout( function () { alert("hi"); },2000)};
myvar();// will alert hi after 2 seconds

如果您需要传递变量:

window.myvar = function(message){
  window.setTimeout( function () { alert(message); },2000)
};
myvar("bye");// will alert bye after 2 seconds

setTimeout是一个函数并且将返回一个数字,你可以使用该数字来取消超时,以下不会发出任何警告,因为我取消了它:

var timeoutHandle=setTimeout(function(){alert("hi");},5000);
// next line cancels the timeout
clearTimeout(timeoutHandle);