clearTimeout(timer)和timer=null有没有区别呢

timer=setTimeout(function(){
    //dosth
    clearTimeout(timer);
    timer=null;
},2000)
阅读 12.7k
5 个回答

timer=null起不到终止计时器的作用,只是给timer变量赋了值

var x = setInterval(function(){
alert()
x = null;
},1000);

这样可以看出来问题。

clearTimeout(timer)清除了timer指向的定时器,timer=null,是修改timer的指向,是timer这个变量不指向某个定时器,然而并没有清除这个定时器,定时器依旧可以使用

timer 只是一个正整数,你设置 null 又有什么用呢?

根据测试,timer是分配一个随机数字id,clearTimeout后,timer的变量指向数字id还在, 只是定时器停止了。
把timer赋值为null,是为了释放内存,同时也方便布尔判断吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题