var time = null;
var i = 0;
function test(){
time = setInterval(test , 1000); // 定义
i++;
console.log(i); // 打开控制台查看
clearInterval(time); // 清除
}
你觉得代码会无限执行下去吗。答案是不会。他只会执行一次。因为在执行定时器之前,定时器就被你给清除了。
然后按照原代码来看下过程:
var time = null;
var i = 0;
function test(){
clearInterval(time); // 清除定时器,虽然第一次执行的时候没有被设置
// 不过,他又不会报错,你理他呢
// 第二,三次....总之,接下去的执行才是亮点
// 每次都会清楚上次定义的定时器
// 所以,能够确保,每次执行时,只有一个定时器在执行
i++;
console.log(i);
time = setInterval(test , 1000); // 定义定时器
}
test();
1 , 2回答在上线注释中。
问题3:模拟一个过程,就是那个定时器的过程。如果是在定时器定义之后清除,会怎么样??
然后按照原代码来看下过程:
所以,要先清除定时器,后定义
This用oSubNav是可以的。就是为了传递进去
这个写法好像是jquery上用的吧。也是为了能访问到?用别的也是可以的。
避免多次触发