这个问题是对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
,不是吗?)。
答案 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/false
。
isMenuVisible
在每次执行中都会改变。
isMenuVisible = true:
这只是一直将true
分配给isMenuVisible
。