if (timer) {
clearTimeout(timer)
}
...
timer = null
其实就是判断在定时器延迟时间内定义的事件如果再次被触发就清除掉上一次定时器再重新定义一个计时器。 结尾timer=null是为了把延迟事件执行结束后清空timer变量,它并不影响if里面的判断,因为你在延迟时间内触发 事件时定时器的代码还没有被执行。也就是说之前定义timer仍然为不为null。只有在执行过后它才是null。