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

发现一个错误,变量flag放置位置的问题,不是很懂

老师是把变量直接放置在了function start(obj,json,fn){    的下方

而我运行

oLi.onmouseover = function(){

start(oLi,{width:400,height:200,opacity:100},function(){

start(oLi,{opacity:30},function(){

start(oLi,{width:200,height:100})

})

})

}

这段代码的时候,发现透明度没变化

然后我把var flag = true; 放置到了for in 上方 定时器下第一个

就可以正常运行了

但我不太明白是什么原因,可否解释的明白一点

老师写在function start(obj,json,fn)这个函数的局部内不是都应该有效吗

正在回答

2 回答

我试过把var flag = true; 放置到for in 上方和放在function start(obj,json,fn)这个函数的局部内都是可行的。

两者的区别是:前者是在setInterval(   ,30)内,所以相当于每30ml对flag 赋一次 true; 

后者的var flag = true; 相当于是“全局变量”,在setInterval(   ,30)内当然可以使用flag,更可以改变flag.

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

wgx12138

你好,请问如果把flag设为“全局变量”时,在setInterval(function(){} ,30)中改变flag值为false,指的是每30毫秒可以改变flag值为false,但每次执行定时器时flag的值还是true吗?在setInterval(function(){} ,30)中改变flag值是不会改变flag在“全局”中的值吗?
2016-05-20 回复 有任何疑惑可以回复我~
#2

慕之光 回复 wgx12138

每次执行定时器时flag的值如果在别的地方没有对其做修改,那永远会是false的。所以说老师的那个例子是有错误的。把老师的那段代码改成链式运动就能发现错误
2016-05-21 回复 有任何疑惑可以回复我~

我对着flag判断不等于那块不明白,你明白吗

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

举报

0/150
提交
取消
JS动画效果
  • 参与学习       113925    人
  • 解答问题       1443    个

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

进入课程

发现一个错误,变量flag放置位置的问题,不是很懂

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