定时器心路历程:。。(消遣文)
正常的话会想先试试闭包与立即函数。。
first:
function
timer(
period){
for(
var
i=
0;
i<
period;
i++)
{
setTimeout(
function(){
return (
function(
n){
console.
log(
n);
})(
i);
},
1000);
}
}
timer(
5);
结果并不会是我们期待的1,2,3,4,而是在一秒钟后输出5个5,调试后发现for循环很快设置了5个定时器,他们统一会在1s后执行,设置完定时器后,当前所在事件也就是这个函数结束了,这个时候开始执行setTimeout定时器内部的函数,因为i已经是5了,所以所有的定时器里都变成了5,并一起输出了出来,所以想正经写一个定时器还是要用下递归
second: