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

来源:6-2 完美运动框架

高手之路

2016-05-13 11:19

老师是把变量直接放置在了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回答

  • 慕之光
    2016-05-16 15:43:53
    已采纳

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

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

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

    慕之光 回复wgx121...

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

    2016-05-21 11:29:48

    共 2 条回复 >

  • Dream0703
    2016-05-14 11:38:45

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

JS动画效果

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

113925 学习 · 1443 问题

查看课程

相似问题