javascript中setInterval函数的闭包
Closure for setInterval function in javascript
如何在不使用全局变量的情况下使用setInterval
?我更喜欢将setInerval调用的函数的所有变量封装在某种闭包中,比如:
var wrap = function (f){
var local1, local2, ...;
return function () { return f(); }
}
这不起作用,但我的想法是将wrap(f)
而不是f
传递给setInterval
,这样f
的局部就可以很好地封装起来,不会污染全局范围。
javascript没有动态绑定。(除此关键字外)
使用匿名功能可以存档您的想法。(称为关闭)
var fnc = function(){
var local1, local2;
return function(){
// using local1, local2
}
};
setInterval(fnc, 1000);
我想你正在寻找这样的东西。。。
var wrap = function (f){
var locals = Array.prototype.slice.call(arguments, 1);
return function () { f.apply(this, locals); }
};
function logger_func() {
console.log.apply(console, arguments);
}
for (var i = 0; i < 10; i++) {
setTimeout( wrap(logger_func, i, "foo_" + i), // <-- wrapping i
i * 1000 );
}
请注意,现代环境允许您向setTimeout
传递额外的参数。。。
for (var i = 0; i < 10; i++) {
setTimeout(logger_func, i * 1000, i, "foo_" + i);
}
相关文章:
- 使用闭包/函数绑定将自函数作为回调传递
- 了解 JavaScript 闭包函数
- 传递多个参数的闭包函数
- 将“(0)”附加到此闭包函数的目的是什么
- 如何复制(新实例)闭包函数
- Javascript 闭包函数参数
- 具有闭包函数作用域的意外行为
- javascript闭包函数可以由用户更改吗
- Javascript:是这个闭包函数
- 为什么闭包函数中的 javascript 变量在多次调用时不会重置为默认值
- Js闭包:函数在第二次调用时失败
- 如何存储闭包函数返回的变量
- javascript闭包函数的用法
- JavaScript闭包函数传递给事件监听器
- 闭包函数问题
- & # 39;这个# 39;匿名闭包函数内部
- 在JavaScript中实现自动记忆(返回闭包函数)
- 不理解闭包函数是如何工作的
- Javascript闭包函数
- 为javascript闭包函数编写jasmine测试规范