学习js第十天

        今天想总结总结下,我遇见的interval这个定时器的一些问题,可能对大家有点帮助(因为真的卡了我挺久)

 以上代码实现点击按钮之后返回==”请在 ”time“ 秒之后重新发送短信,time为0时内容重写变为发送验证码“

但是实现的效果为 5 4 3 2 然后直接回到if中判断为0,返回=====发送验证发送验证码。 也就是time为1的时候没有实现,于是我在每一次的innerHTML赋值下面打印了当前的time(以上代码第九行)===结果如下

 也就是说1这个情况的函数是执行了,但是没有返回到内容里。

而当我把以上代码的if判断以及内容和赋值内容对调位置时,如下==此时返回结果一切正常,“请在1秒后发送”也会实现出来

 以上代码的time不是时间,只是一个数,只会随着运行次数的变化而变化,不会因为定时器的运行时间变化影响

问了很多人,总结出来以下结论:

          此处出现的问题其实是interval这个定时器的运行机制,

         时间第一秒过去之后===开始第一次进行函数,此时time为5,但是!这个时候第二秒已经过去了,此时整个函数已经再1-2秒这个时间里运行完了,可以理解为当你输出5的时候,定时器已经结束第二秒,开始进行第2-3的第二次函数。

        以上说的可能比较抽象,毕竟效果都是5.

        现在我们从time为2的时候开始去想,判断为什么1不会出来。当time为2的时候此时这一次函数已经在这一秒完全结束了,也就时time--已经进行,此时的time其实为1,紧接着定时器进行下一次函数。重点来了!time为1传入下一次函数,按照函数进行顺序应该时先输出”请在1秒后发送“,再去time-- ,但是定时器已经在这一秒把这一整个函数运行完了,定时器返回了这一秒结束后函数的返回的状态,也就是说time--已经进行了,此时time为0. if后面的语句运行,覆盖了,所以1这个值返回不出来(喵的。。。这不就是覆盖么。。。。我在想什么啊......)耽误大家时间了.............我是rz........

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值