代码如下:
if (iTarget == icur) { if(fn){fn();} clearInterval(obj.timer); }
因为如果这样先判断有fn()方法时,会先执行调用fn()方法然后执行clearintval(),但是这时候浏览器并不会等到fn()方法执行完才去调用clearintval().它会直接清除fn()内的定时器。正好老师下节课会讲到同时调用两个 startMove()方法时会遇到的问题,这时只会执行第二个startMove()方法而不会一个一个调用也不会同时调用,原因就是第一个startMove()方法还没执行完第二个startMove()里的clearintval()就把第一个startMove()计时器清除了。这和你问的问题应该是同一个道理吧。个人理解,适当参考。