用setTimeout实现setInterval

起因:

闲来无事和同事交流遇到过那些经典的面试题,同事说有次面试让用用setTimeout实现setInterval并实现clearInterval,话不多说show me code!

function setInv (callback, time) {
   const timmer = setTimeout(() => {
        setInv(callback, time)
        if (!window.isClear) callback()
        // 下边这行代码是否有必要呢?
        window.clearTimeout(timmer)
      }, time)
      return timmer
}

function clearInv (timmer) {
  window.isClear = true
  window.clearTimeout(timmer)
}

const myTask = setInv(() => console.log(Date.now()), 2)
setTimeout(() => {
  console.log('清除定时')
  clearInv(myTask)
}, 5000)

疑问:

同时也有个问题setTimeout使用过后要不要清楚释放内存,还是说JS底层的垃圾回收会帮我做这件事?跪请大神明示
请戳这里👇在线演示
LiveDemo

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天跟大家分享一道有趣的题目,大家对定时器函数应该都不陌生,但是在开始我们的问题之前,还是简单介绍下这两个方法。 ...
    Wendy曹阅读 18,847评论 3 9
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,748评论 25 709
  • 我是为你好。 对相当多的人来说,这句话想必不陌生吧。从小到大,在你面临一个个人生抉择的时候它就会在耳边悄然响起。 ...
    潇湘笛阅读 284评论 0 0
  • 这几天,是每年都会有的考研成绩出来的时候,在过完了让自己焦虑的春节这段痛苦焦灼的日子后,这个令自己魂牵梦绕的日子终...
    大张小调阅读 1,482评论 11 41