如何将变化参数传递给setTimeout
How to pass changing parameter to setTimeout?
我想将全局参数传递给setTimeout
中的函数,但我希望在解释setTimeout
时值保持不变:
var a=0;
setTimeout(function(){
console.log(a);
},5000,a)
a=1;
//output is 1 and should be 0
我该如何解决这个问题?我已经在Stack Overflow上搜索了一个答案,但没有找到任何东西。
这是因为您实际上仍然在使用外部变量。只需将参数添加到函数中:
setTimeout(function (a) {
console.log(a);
}, 5000, a);
var a = 0;
setTimeout(function(c) {
console.log(c);
}, 5000, a);
a = 1;
您可以使用闭包方法来做与前面的答案相同的事情:
var a=0;
function func(b){
var c = b;
this.display = function(){
console.log(c);
}
}
var functionDisplay = new func(a);
setTimeout(function(){
functionDisplay.display();
},5000)
a=1;
这里的问题是,在setTimeout函数中,变量被引用到外部作用域的变量引用。所以你需要为setTimeout函数创建一个不同的作用域,如下所示:
var a = 0;
setTimeout((function(a) {
return function() {
console.log(a, arguments);
}
})(a), 5000)
a = 1;
相关文章:
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- JavaScript常量-作为参数传递或直接使用
- 如何将javascript对象作为参数传递到c#web服务中
- 将参数传递给函数
- 如何将Gruntfile.js中的参数传递到webdriverio规范
- javascript,将参数传递给函数内部的闭包中的回调
- Javascript-将包含变量的html字符串作为参数传递
- 将字符串作为参数传递给函数onclick event jquery
- 将修改后的数组作为参数传递给函数
- 将参数传递到闭包中以进行 setTimeout
- 如何将参数传递给使用 setTimeout 调用的函数
- Javascript:将参数传递给内部setTimeOut函数
- 如何将参数传递到setTimeout中的函数
- 可以't传递匿名函数的参数,该参数作为setTimeout函数传递
- setTimeOut参数正在传递
- 在setTimeout中传递多个参数以承诺解析
- 将多个数组参数传递到幻灯片放映的setTimeout中的问题
- AJAX setTimeout在传递参数时不工作