首页 > 代码库 > javascript使用setTimeout、setInterval时找不到变量的问题(1)
javascript使用setTimeout、setInterval时找不到变量的问题(1)
我们在某个作用域内或者在自己定义的一个类里调用setTimeout、setInterval会经常会遇到找不到某个变量的错误。
比如下面这个例子:
window.onload = function(){ manager.init(); }; var manager = { init: function() { slef = this; this.name = "manager"; setInterval(this.timerMonitor, 1000); }, timerMonitor: function(){ console.log(this.name); } }
我们来看下chrome下的运行结果:
并没有按预想打印manager。因为this.name这个变量是undefined状态。
那么怎么解决这个问题呢?
只需要把setInterval(timerMonitor, 1000);改为setInterval(function(){self.timerMonitor()}, 1000);就可以了。
完整代码如下:
window.onload = function(){ manager.init(); }; var manager = { init: function() { self=this; this.name = "manager"; setInterval(function(){self.timerMonitor()}, 1000); }, timerMonitor: function(){ console.log(this.name); } }
再来看Chrome下的运行结果如下图:
这个时候this.name变量被正确打印出来了。
问题解决了,问题也来了,为什么这么改就好了呢?后面再更新blog说明原因。
javascript使用setTimeout、setInterval时找不到变量的问题(1)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。