var num = 0;
var max = 10;
var intervalNumber = null;function incrementNumber() {
return function() {
num++;
alert("No");
setTimeout(arguments.callee, 500);
if (num == max) {
clearTimeout(intervalNumber);
alert("Done");
}
}
}var interval = incrementNumber();
intervalNumber = setTimeout(interval, 500);
为什么弹出了Done窗口后还继续弹出No?不是应该Done后就没有了吗?
var test = setTimeout(arguments.callee, 500);
//alert(arguments.callee)
if (num == max) {
clearTimeout(intervalNumber);
clearTimeout(test);
alert("Done");
}这样就停住了
setTimeout(arguments.callee, 500);
这个不带名字没有清除
if (num == max) {
clearTimeout(intervalNumber);
alert("Done");
}==》
if (num == max) {
alert("Done");
}else{
setTimeout(arguments.callee, 500);
}
var num = 0;
var max = 10;
var intervalNumber = null;function incrementNumber() {
return function() {
num++;
alert("No");
//你之前将setTimeout(arguments.callee, 500);放在这里,不管下面的num==max条件成立与否,都已经执行了呀。你自己仔细想想就清楚了
if (num == max) {
alert("Done");
}else{
setTimeout(arguments.callee, 500);//你这个调用自身的定时器并没有清除掉
}
}
};
var interval = incrementNumber();
intervalNumber = setTimeout(interval, 500);