x = false和x =!x TO x = false和x = true有什么区别?

时间:2018-08-31 17:16:23

标签: javascript logic operators

这个问题是对this one的跟进。

两者之间有什么区别

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,不是吗?)。

3 个答案:

答案 0 :(得分:1)

首先,在您的 burger.addEventListener 内部,isMenuVisible = !isMenuVisible;isMenuVisible = true是不同的东西。

isMenuVisible = !isMenuVisible;意味着isMenuVisible的值现在可以替代其值,例如,如果它是true,则使其成为false,如果它是false然后将其设为true

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

isMenuVisible = !isMenuVisible:

这就像翻转卡片。如果我们最初设置isMenuVisible = false。在执行完上述行一次之后,isMenuVisible将为!isMenuVisible/true。再次执行后,isMenuVisible将为!isMenuVisible/falseisMenuVisible在每次执行中都会改变。

isMenuVisible = true:

这只是一直将true分配给isMenuVisible