用变量和属性有什么差别吗?

简单做了一个图片抖动的方法。发现在其中声明变量来存数值和属性存数值最后结果不一样,看了好久,没看出问题出在哪里。请各位帮我解答一下。

https://img.mukewang.com/5c36e5b60001f90307900852.jpg

狐的传说
浏览 512回答 1
1回答

SMILET

从题主的代码来看,如果把pos赋值给obj中的一个属性的话,在抖动的过程中鼠标移动到元素上就会造成抖动偏移,因为每次执行shake的时候obj.pos属性都会根据当前top刷新(虽然接下来就因为“正在抖动中”跳出了函数),因此会干扰到timer中的取值,而使用局部变量则没有这个问题(timer中使用的pos变量始终是最初开始抖动时定义的那个变量)修改的话你把if (obj.onOff) { return; }提取到shake函数开头就可以避免这个问题了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript