实现一个打点计时器,要求
1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1
2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
3、第一个数需要立即输出
function count(start, end) { console.log(start++);//第一个数需要立即输出 //setInterval(code,millisec,lang) //参数1:必需。要调用的函数或要执行的代码串 //参数2:必须。周期性执行或调用 code 之间的时间间隔,以毫秒计 //参数3:可选。 var time = setInterval(function(){ if(start <= end){ console.log(start++); }else{ clearInterval(time); } },100); return { cancel:function(){ clearInterval(time); } } } //注:setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式。 //方***不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。 //setTimeout() :在指定的毫秒数后调用函数或计算表达式,写法和setInterval()一样
/* 实现一个打点计时器,要求 1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1 2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作 3、第一个数需要立即输出 */ function count(start, end) { //第一个数立即输出 console.log(start++); //利用setInterval方法计算间隔多长时间输出一个数字 var timer = setInterval(function(){ if (start <= end) { console.log(start++); } else{ clearInterval(timer); } }, 100); //返回一个对象,其中包含cancel方法 return { cancel:function(){ clearInterval(timer); } }; } console.log(count(2,10));
function count(start, end) { console.log(start++); let timer = setInterval(function() { if(start <= end) { console.log(start++); }else{ clearInterval(timer); } },100); return { cancel:function() { clearInterval(timer); } } }方法二:
function count(start, end) { if(start <= end) { console.log(start++); item = setTimeout(function(){ count(start,end) },100); } return { cancel: function(){clearTimeout(item);} } }
function count(start, end) { console.log(start); var i = start+1; var timer = null; timer = setInterval(function (){ if(i<=end){ console.log(i); i = i + 1; } }, 100); return obj = { cancel: function (){ clearInterval(timer); } } }
一、通过setInterval()方法 【出自 @希留】
function count(start, end) { //立即输出第一个值 console.log(start++); var timer = setInterval(function(){ if(start <= end){ console.log(start++); }else{ clearInterval(timer); } },100); //返回一个对象 return { cancel : function(){ clearInterval(timer); } }; }
二、通过setTimeout()方法【出自 @shawnan】
function count(start, end) { if(start <= end){ console.log(start); start++; st = setTimeout(function(){count(start, end)}, 100); } return { cancel: function(){clearTimeout(st);} } }
//修改后function count(start, end) { if(start<=end){ console.log(start); start++; t= setTimeout(function(){count(start,end)},100) } return { cancel:function (){ clearTimeout(t); } } }//修改前function count(start, end) { if(start<=end){ console.log(start); start++; var t= setTimeout(count(start,end),100) } return { cancel:function (){ clearTimeout(t); } }} 各位大佬我想问问为什么 加了var 和去掉匿名函数的声明就不行通过了呢