x=false AND x=!x TO x=false AND x=true 之间有什么区别?

What's the difference between x=false AND x=!x TO x=false AND x=true?

此问题是 的后续问题。

有什么区别:

let isMenuVisible = false;

burger.addEventListener('click', ()=>{
  isMenuVisible = !isMenuVisible;
  menu.style.display = isMenuVisible ? 'block' : 'none';
});

let isMenuVisible = false;

burger.addEventListener('click', ()=>{
  isMenuVisible = true;
  menu.style.display = isMenuVisible ? 'block' : 'none';
});

我无法理解为什么后面的代码失败了;在我看来它们是等价的(因为 false 的否定是 true,不是吗?)。

。在第一种情况下 isMenuVisible 为假,因此 !isMenuVisible 为真;

isMenuVisible =!isMenuVisible 将设置 isMenuVisible 的值将在每个 click 事件上更改

在第二种情况下,不是通过变量分配值 true 而是直接分配给 isMenuVisible 并且该值永远不会 toggle

首先在你的burger.addEventListener里面isMenuVisible = !isMenuVisible;isMenuVisible = true不是一回事。

isMenuVisible = !isMenuVisible; 表示 isMenuVisible 的值现在是什么,如果它是 true 则将其设为 false,如果它是 [=15] =] 然后让它成为 true

isMenuVisible=true表示设置为true isMenuVisible=false表示设置为false

isMenuVisible = !isMenuVisible:

这就像翻牌。如果我们一开始就设置 isMenuVisible = false 。上面这行执行一次后,isMenuVisible 就会变成 !isMenuVisible/true。再次执行后,isMenuVisible 将变为 !isMenuVisible/falseisMenuVisible 在每次执行中都会发生变化。

isMenuVisible = true:

这只是一直将 true 分配给 isMenuVisible