为了账号安全,请及时绑定邮箱和手机立即绑定

为什么flag怎么会变成true?

flag在setInterval外面定义成true,这个局部一旦变成false 怎么可能再变换成true呢?


正在回答

3 回答

老师的代码好像有点问题,你要不把flag放setInterval里面,要不就

if(flag){

clearInterval(obj.timer);

if(fn){

fn();

 }

}else{

flag=true;

}


1 回复 有任何疑惑可以回复我~

因为flag是全局变量,定时函数内没有定义这个变量,所以每30毫秒执行一次代码都需要重新读取函数外的flag变量,该变量的默认值是true。只有当条件成立时,即其中一个当前值不等于目标值时,才会变成false。变量作用域的知识再去了解一下,就会懂了。

0 回复 有任何疑惑可以回复我~
#1

土爷

我理解错了,不好意思。默认值已经改变了,所以还是要在判断语句中加上 else{flag=true;} 因为只要等于当前值等于目标值,speed等于零,就算不关闭定时器,属性值也不会有变化,但是会影响链式运动不执行!
2016-01-09 回复 有任何疑惑可以回复我~


想让它变为false只能flag=false,!flag只是代表了false


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么flag怎么会变成true?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信