如何在闭包中保存变量的值
我需要创建多个内部有静态 id 的 JavaScript 函数,因此函数本身知道要处理哪些数据。
这是一些代码:
(function(){
function log(s){
if(console && console.log) console.log(s);
else alert(s);
}
var i = 10; while (i--){
window.setTimeout(function(){
// i need i to be 10, 9, 8... here not -1
log(i);
},500);
}
})();
问题是 i 总是通过循环更新,我需要防止这种情况。
预先感谢您的任何帮助、评论或提示!
i need to create multiple javascript functions which have a static id inside, so the function itself knows what data to process.
Here is some code:
(function(){
function log(s){
if(console && console.log) console.log(s);
else alert(s);
}
var i = 10; while (i--){
window.setTimeout(function(){
// i need i to be 10, 9, 8... here not -1
log(i);
},500);
}
})();
The problem ist that i allways gets updated by the loop, and i need to prevent this.
Thanks in advance for any help, comments or tips!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在每次迭代中使用立即调用函数的更好方法是让
log()
函数返回一个函数。总体结果是您最终构造的函数对象更少。
如果您希望按一定时间间隔进行调用,请使用 setInterval() 或将其更改
为:
A little better approach to using an immediately invoked function in each iteration, is to have your
log()
function return a function.The overall result is that you end up constructing fewer function objects.
If you wanted the calls to be at an interval, either use
setInterval()
, or change this:to this:
只需创建一个函数并调用它即可。
Just create a function and call it.