【发布时间】:2018-08-31 17:16:22
【问题描述】:
这个问题是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,不是吗?)。
【问题讨论】:
-
isMenuVisible = true;将始终将该值设置为 true。isMenuVisible = !isMenuVisible;会改变值,如果为假,则现在为真,如果为真,则现在为假; -
这就是你的全部代码吗?在添加事件侦听器之前,值可能会被其他人更改。
-
失败是什么意思
-
第一次调用监听器的时候是一样的。在第二次调用中,
isMenuVisible将在第一个 sn-p 中设置为false- 在第二个中它将保持true
标签: javascript logic operators