Javascript 如何在setTimeout中将参数传递给函数
我有以下代码:Javascript 如何在setTimeout中将参数传递给函数,javascript,jquery,Javascript,Jquery,我有以下代码: function fn($){ return function(){ innerFn = function(){ setTimeout(show, 1000); }; show = function(){ $.alert("TEST"); } } } 但是,一秒钟后,当函数show运行时,它会说$未定义。我如何解决这个问题 如何在setTimeout中将参数传递给函数 setTimeout具有用于添加参数的 va
function fn($){
return function(){
innerFn = function(){
setTimeout(show, 1000);
};
show = function(){
$.alert("TEST");
}
}
}
但是,一秒钟后,当函数show
运行时,它会说$未定义。我如何解决这个问题
如何在setTimeout中将参数传递给函数
setTimeout具有用于添加参数的
var timeoutID=window.setTimeout(func,delay,[param1,param2,…)代码>
使用它
如果你要使用这个
,你应该小心。但这是另一个问题
如何在setTimeout中将参数传递给函数
setTimeout具有用于添加参数的
var timeoutID=window.setTimeout(func,delay,[param1,param2,…)代码>
使用它
如果你要使用这个
,你应该小心。但这是另一个问题。这里有很多因素在起作用。最重要的是你的setTimeout永远不会被调用,因为innerFn永远不会被调用。这应该能奏效
function fn($){
return function(){
setTimeout(function(){
$.alert("TEST");
}, 1000);
}
}
fn(window)(); //triggers your alert after 1000ms
这里有很多事情在起作用。最重要的是你的setTimeout永远不会被调用,因为innerFn永远不会被调用。这应该能奏效
function fn($){
return function(){
setTimeout(function(){
$.alert("TEST");
}, 1000);
}
}
fn(window)(); //triggers your alert after 1000ms
您的代码毫无意义,因为未调用任何内容:
function fn($){
return function(){
innerFn = function(){
setTimeout(show, 1000);
};
show = function(){
$.alert("TEST");
}
}
}
假设我正在调用fn
传递窗口
,然后返回一个我可以执行的函数。但是,因为这个函数只包含函数声明-您还忘记了var
,所以您污染了全局范围,这是不好的-什么都没有发生
内部至少需要一个函数调用,如:
function fn($){
return function(){
var innerFn = function(){
setTimeout(show, 1000);
};
var show = function(){
$.alert("TEST");
}
innerFn();
}
}
fn(window)();
这将起作用。然而,这绝对是多余的。你只需要:
function fn($){
return function(){
function show(){
$.alert("TEST");
}
setTimeout(show, 1000);
}
}
以获得相同的结果。然而,如果您的目标只是绑定了一个参数,那么您可以使用。如文档所述,您可以使用setTimeout
的第三个参数,但似乎是这样
因此,bind
的示例如下所示:
function show() {
this.alert('test');
}
setTimeout(show.bind(window), 1000);
另外请注意,window
在默认情况下是全局对象,因此通常不必这样做,只需发出alert
就足够了。然而,我认为这不是您的实际代码,而只是一个测试,正如警报的字符串所说
如果您更喜欢使用窗口
作为第一个参数,并且您对上下文对象此
不感兴趣,则可以执行以下操作:
function show($) {
$.alert('test');
}
setTimeout(show.bind(null, window), 1000);
您的代码毫无意义,因为未调用任何内容:
function fn($){
return function(){
innerFn = function(){
setTimeout(show, 1000);
};
show = function(){
$.alert("TEST");
}
}
}
假设我正在调用fn
传递窗口
,然后返回一个我可以执行的函数。但是,因为这个函数只包含函数声明-您还忘记了var
,所以您污染了全局范围,这是不好的-什么都没有发生
内部至少需要一个函数调用,如:
function fn($){
return function(){
var innerFn = function(){
setTimeout(show, 1000);
};
var show = function(){
$.alert("TEST");
}
innerFn();
}
}
fn(window)();
这将起作用。然而,这绝对是多余的。你只需要:
function fn($){
return function(){
function show(){
$.alert("TEST");
}
setTimeout(show, 1000);
}
}
以获得相同的结果。然而,如果您的目标只是绑定了一个参数,那么您可以使用。如文档所述,您可以使用setTimeout
的第三个参数,但似乎是这样
因此,bind
的示例如下所示:
function show() {
this.alert('test');
}
setTimeout(show.bind(window), 1000);
另外请注意,window
在默认情况下是全局对象,因此通常不必这样做,只需发出alert
就足够了。然而,我认为这不是您的实际代码,而只是一个测试,正如警报的字符串所说
如果您更喜欢使用窗口
作为第一个参数,并且您对上下文对象此
不感兴趣,则可以执行以下操作:
function show($) {
$.alert('test');
}
setTimeout(show.bind(null, window), 1000);
何时以及如何调用fn
?(以及如何调用show
)在加载的页面上,调用fn.like yui module.$
应该在show
中可用,如果它是在调用fn
时定义的。我尝试了闭包,但做不到。setTimeout上下文是窗口,它没有$。何时以及如何调用fn
?(还有,show
是如何调用的?)在加载的页面上,调用fn.like yui module.$
应该在show
中可用,如果它是在调用fn
时定义的。我尝试了闭包,但做不到。setTimeout上下文是窗口,它没有$。我在其他地方调用了innerFn,这只是一个例子。我想知道,与上面的代码一样,如何实现?在当前示例中,show函数可以访问$variable,因为它位于“parent”范围内。您的实际代码中肯定还有其他内容。我在其他地方调用了innerFn,这只是一个示例。我想知道,像上面的代码一样,如何实现?在您当前的示例中,show函数可以访问$variable,因为它在“父”范围内。在您的实际代码中肯定还有其他东西。