flag在setInterval外面定义成true,这个局部一旦变成false 怎么可能再变换成true呢?
老师的代码好像有点问题,你要不把flag放setInterval里面,要不就
if(flag){
clearInterval(obj.timer);
if(fn){
fn();
}
}else{
flag=true;
}
因为flag是全局变量,定时函数内没有定义这个变量,所以每30毫秒执行一次代码都需要重新读取函数外的flag变量,该变量的默认值是true。只有当条件成立时,即其中一个当前值不等于目标值时,才会变成false。变量作用域的知识再去了解一下,就会懂了。
想让它变为false只能flag=false,!flag只是代表了false