Javascript中的setTimeout和setInterval函数的区别

JavaScript011

Javascript中的setTimeout和setInterval函数的区别,第1张

setTimeout相当于“计时器”,到了指定的时间就执行指定的事件函数,而且只执行一次(通过在函数内部再次利用setTimeout递归调用自身可以实现多次执行,且间隔时间可以不同);

setInterval则相当于“定时器”,以指定的时间为间隔反复执行指定的事件函数。

相对而言,setTimeout的使用更加灵活,所以比较常用一些。

首先告诉你 if(a==0) { a++ } if(a==7) { a-- } 这段代码没用,想象一下当a=0进入如程序,加一下等1,等于1再进入程序,然后就没用了,你的程序我怎么看不到一个分号out of memory这个问题其实不容易被发现,因为只有经过实践的积累才会看到结果。各位往往没有耐心等到他的发生,但是它确实在某些条件下存在。废话不多说,分析问题。原因:setTimeout定时器惹的祸深层原因:setTimeout的应用往往伴随着某个函数的递归,这个过程中系统会始终开辟一部分内存空间等待着递归的结束。但是我们广大的js程序员往往没有结束递归的习惯,甚至认为这段内存会在某一时间段之内自动回收,GOD,这就是js的内存泄露了!!解决方法:如果你有面向对象的开发习惯的话那是最好的,设置一个成员变量否则设置一个全局变量var timer(js的弱数据类型声明真的很够呛)用来记录定时器对象。然后设置一个成员变量或者全局变量计数器var cnt,每执行一次递归计数器自增一次,当达到一定的数量的递归之后析构定时器对象。例子: 会导致内存泄露: function func1() { window.setTimeout("func1()",1000) }改进后的程序: var timervar cnt=0function func1(){cnt++ if(cnt>1000) { window.clearTimeout(timer) cnt=0 } timer = window.setTimeout("func1()",1000) }