我需要理解以下JavaScript代码

我需要理解以下JavaScript代码,javascript,Javascript,我有下面的普通JavaScript代码。我在var removeClass=true部分不理解的内容 var arrow = document.getElementById('arrow'); var removeClass = true; function turn(){ arrow.classList.toggle('rotate'); removeClass = false; } function cls(){ if(removeClass){ arrow.classList.

我有下面的普通JavaScript代码。我在
var removeClass=true部分不理解的内容

var arrow = document.getElementById('arrow');
var removeClass = true;
function turn(){
arrow.classList.toggle('rotate');
  removeClass = false;
}
function cls(){
if(removeClass){
    arrow.classList.remove('rotate');
}
   removeClass = true;
}
document.querySelector('#dropdown01').addEventListener('click', turn);
document.querySelector('body').addEventListener('click', cls);

在这里,我在单击下拉列表时将箭头旋转180度,在单击主体时移除旋转。它起作用了。但我不知道怎么做?这让我很难受。感谢您的帮助。

这是设置removeClass的初始值。 当函数turn()运行时,它将removeClass设置为false。然后,当函数cls()运行时,它会检查“removeClass”是否为真。
简单地说,设置removeClass=true只是为了确保在页面加载时变量的值正确。

该变量用于检查箭头是否旋转。当您第一次使用
turn()
旋转它时,您的
removeClass
将变为
false
,并将rotate类添加到箭头中(我假设它会旋转)。当您使用
cls()
将其向后旋转时,它将删除rotate类,并且
removeClass
变为true。这意味着只要
rotateClass
为真,箭头就不会转动


话虽如此,该变量的命名选择并不是编写代码的人可以选择的最佳选项。

removeClass
只会阻止在未旋转的情况下从箭头中删除
rotate
类的逻辑。如果类不在那里,那么移除将什么也不做,没有条件也不会真正改变任何事情。最好的做法可能是根本不检查并尝试移除类,或者在移除之前实际检查元素以查看它是否拥有类。当元素已经持有状态时,生成一个二级变量来反映元素的状态是相当冗余的。一个更好的选择是简单地停止“下拉”处理程序中的事件传播。