[js]setTimeout指针项改变的问题

问题缘起

以下代码会输出一次click。一开始我以为既然已经停止了,为什么还会产生呢。

var timer;
timer=setTimeout(function(){
    console.log("click")
},1000)
timer=setTimeout(function(){
    console.log("click")
},1000)
clearTimeout(timer);

原理

实际上原理就是因为timer是一个指向setTimeout新线程中的引用。而clearTimeout会根据引用找到相应的线程中的方法,然后清除掉。
当你第二次给timer赋值时,引用的指向已经变了。clearTimeout并没有清除第一次的setTimeout

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

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,930评论 18 399
  • JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInt...
    晚晴幽草阅读 5,569评论 1 18
  • HTML HTML5标签 媒体查询head部分写法 Doctype作用? 严格模式与混杂模式如何区分?它们有何意义...
    Mayo_阅读 3,851评论 0 8
  • 听奶奶说!我三岁就跟她在一起过日子了!小时候记忆里只有奶奶和我相依为命,从小奶奶教我做人做事、给我讲故事,是奶奶陪...
    流浪孤儿阅读 2,548评论 0 1
  • 此书副标题为‘电商后台系统产品逻辑全解析’,从副标题能看出,讲的主要是后台系统的内容。整本书看下来,算是把电商(书...
    带好我的包阅读 8,075评论 0 4