按老师这样写是不是有bug?
因为 在触发函数时 用了flag = true, 但是在setinterval 中 其实必然只能是false 没有办法改回ture的状态。 所以setInterval 其实一直也停不下来,咱们看见东西不动了只是因为当前值与目标值已经一致 所以 speed 怎么也都是0. 但是
因为 在触发函数时 用了flag = true, 但是在setinterval 中 其实必然只能是false 没有办法改回ture的状态。 所以setInterval 其实一直也停不下来,咱们看见东西不动了只是因为当前值与目标值已经一致 所以 speed 怎么也都是0. 但是
2016-10-21
必须放在外部, 原因一:放在setInterval内部并且在for之前,每次当if(icur!=json[attr]){flag=false;},就是说当到达某个属性目标值时,然后下次就绕过它了,判断其它的属性值是否到达目标值,如果没到达,继续flag=false;然后又开始循环被var flag=true;直到所有属性都到达目标值时flag才为true;
这是正常的逻辑思维,但是。。。。。但是。。。但是。。。重要的事,,当你30ms函数还没执行完成,或许还没有到判断到if(icur!=json[attr]){flag=false;}这个位置的时候,你的定时器已经进行下轮循环了,这样的话flag有涉嫌被重写的嫌疑,所以不能放在setInterval内部。如果循环事件长点的话,或许可以放内部。。。。
有个问题就是 flag要声明在setInterval之外,要不然每次循环都要申请内存,资源浪费,微观世界我个觉得挺大一堆开销
举报