setTmeOut 和 setInterval

//根据MDN和一些博文整理

1、定义

1)setTmeOut() 方法可在指定时间以后(以毫秒计)来调用函数或计算表达式。
2)setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
返回值//用来停止执行

一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。

2、setInterval的使用方法

    参数: 可以有第三个参数,第三个参数作为第一个参数(函数)的参数//比较好的一种方法
var flag = setInterval(show, 1000, max);
           1、传函数名,不用加引号,也不加括号,如 setInterval( func, 1000)
      2、传匿名函数,setInterval( function(){}, 1000)
    3、传函数字符串,加引号,也要加括号。如 setInterval("func()",1000);  
//要特别注意一下作用域问题,如果第一个参数是字符串,那么会在全区作用域查找show()函数


3、一些注意:
1、 //只有第一个和第二个能够按照要求执行
setTimeout("alert('对不起, 要你久候')", 3000)
setTimeout(alert, 3000,'对不起, 要你久候')
 setTimeout(alert('对不起, 要你久候'), 3000)//立即执行
setTimeout(alert(), 3000,'对不起, 要你久候')
2、在闭包的题目中总会出现setTimeout
     
  for (var i = 1; i <= 100; i++) {
            setTimeout(function timer() {
            console.log(i);
        }, 0);//即使是0,越大越明显
        }
        console.log('111111111111')
setTimeout这个函数是会在循环结束以后再执行,所以传入的所有参数i都是“上限+1”(如这道题,会输出 100遍101
3、setTimeout和setInterval本来是功能完全不同的两个函数(一个是延迟执行,一个是循环执行),但是只要技巧得当,这两个函数可以灵活运用。
比如,如果让setTimeout不断调用自己(函数中调用),就变成了循环执行
而根据实践(大家的,我写的这方面的代码还是比较少),用setTimeout来实现循环会更好一些(减少一些setInterval导致的时钟不准确,执行次数不对等错误)
这就和setInterval的执行机制有关,暂时还没有看到比较好的博文,所以我也理解的不是很好,等以后理解了再来补充。
但大致原因是js是单线程执行,如果时间到了而其他语句正在执行,setInterval本来要执行的就会被挂起,等空闲再执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值