请问一下,老师,为什么var lock = true;为什么要是全局变量,而不是局部变量,
来源:6-1 JS和CSS3结合实现动画
慕田峪1427181
2021-06-28 12:50:37
<script>
var pos = 1;//1左边还是2右边
var oBtn = document.getElementById('btn')
var oBox = document.getElementById('box')
var lock = true;
//函数节流:一个函数执行一次后,只有大于设定的执行周期后才允许执行第二次
oBtn.onclick = function () {
//函数节流锁
if (!lock) return;
box.style.transition = 'all 2s linear 0s'
if (pos == 1) {
oBox.style.left = '800px'
pos = 2;
} else if (pos == 2) {
oBox.style.left = '100px'
pos = 1;
}
lock = false;
setTimeout(function(){
lock = true
},2000)
}
</script>
1回答
好帮手慕星星
2021-06-28
同学你好,如果是局部变量,按钮每点击一次,lock变量就会被重新初始化一次,赋值为true。连续点击按钮可能会改变已经有的值,导致元素来回移动的效果,自己可以测试下。
祝学习愉快!
相似问题