我需要将window.setTimeout分配给动态制作的GLOBAL变量或对象,例如:
$n = 1
var variable[$n] = window.setTimeout( function () { /*somecode*/ },2000)
这不起作用。
也行不通:
var eval(variable+$n) = window.setTimeout( function () { /*somecode*/ },2000)
但没有“var”,但我需要全局变量,所以我需要“var”范围。
什么是可能的解决方案?
答案 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);