实现一个打点计时器,要求
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 和去掉匿名函数的声明就不行通过了呢
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); } }; }