问题描述:
1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅 1 2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作 3、第一个数需要立即输出
方法一:
function count(start,end){
console.log(start)
var timer = setInterval(function(){
if(start < end){
start++;
console.log(start)
}
},100)
return {
cancel:function(){
clearInterval(timer);
}
}
}
count(1,10)
方法二:
function count(start,end){
console.log(start)
if(start < end){
start++
var st = setTimeout(function(){
count(start,end);
},100)
}
return {
cancel:function(){
clearInterval(st)
}
}
}
知识点: setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。 语法:setTimeout(code, millisec) 注意:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。 语法:setInterval(code ,millisec[,“lang”]) setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
参考:https://github.com/yisainan/web-interview/blob/master/content/%E7%BC%96%E7%A8%8B%E9%A2%98/js.md