先贴一段伪代码吧
//开启计时器请求 this.setTimeout = function(){var self = this; //修改自动状态为true this.isAuto = true; //开启计时器 this.timer = setTimeout( function(){ /*计时运行的代码*/ self.setTimeout; //运行本身 }, /*计时器间隔*/ this.ajaxSpeel); }
这样的设计 让这个函数内部创建一个变量然后不断的 运行自己
这样的话 就会在作用域内创建作用域 会为内存带来增加么
如果不这样做的话 如何实现计时器呢 (不使用for 和 setInterval)
好吧 我仔细回忆了一下我脑袋里面的小学知识
1.作用域的存在只有在子作用域还在执行的时候才会保留
2.这个setTimeout内部不存在子作用域 唯一的一个即将运行的计时器是setTimeout属于全局对象,他会在window作用域下面新开一个空间执行
3. 所以 总结一下 大概的运行过程是 this.setTimeout | window --> window.setTimeout --> window |
4. 果然 目前的出的结论是 只要不是直接创建子作用域的前提下 计时器setInterval 或者 ajax的毁掉内部作用域都不会残留自作用 也就不会对网页内存照成太大的伤害了!~~~