来自w3school的解释
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
定时器setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。
但是javascript都是以单线程的方式运行于浏览器的javascript引擎中的, setTimeout和setInterval的作用只是把你要执行的代码在你设定的一个时间点插入js引擎维护的一个代码队列中, 插入代码队列并不意味着你的代码就会立马执行的
1. 时间只是设置了一个插入队列的时间点,从结果可以看出,设置为0也不是立即执行,只是把它放入待执行的队列中,等前面一个任务执行完毕后再执行
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
定时器
$t = new Date().getTime();
var arr = new Array(100000);
for(var i = 0; i< arr.length; i +=1){
setTimeout(function(){
arr[i] = 1;
},10);
}
setTimeout(function (){
alert('你好')
},0)
$t1 = new Date().getTime()
console.log($t1 - $t)
/* 结果
* FF 516ms
* chrome 423
* opera12.16 假死
* ie10 假死
* opera16 650
* safari 181
* 能出结果的是webkit及gecko
*/
2. 在ie,opera12,ff只会有一个0,webkit的会按照预期的进行
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
定时器
var i = 0
setInterval(function(){
document.write(i++)
},100)
3.混用代码演示定时器演示