В чем разница между x = ложь И x =! X TO x = ложь И x = истина? - PullRequest
0 голосов
/ 31 августа 2018

Этот вопрос является продолжением до этого .

В чем разница между:

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 голосов
/ 31 августа 2018

Прежде всего, внутри вашего burger.addEventListener isMenuVisible = !isMenuVisible; и isMenuVisible = true - это не одно и то же.

isMenuVisible = !isMenuVisible; означает, что когда-либо значение isMenuVisible теперь делает его альтернативным, например, если это true, тогда сделайте его false, если это false, тогда сделайте его true

и

isMenuVisible=true означает установить его true isMenuVisible=false означает установить его false

0 голосов
/ 01 октября 2018
isMenuVisible = !isMenuVisible:

Это похоже на переворачивание карты. Если мы установим isMenuVisible = false изначально. После выполнения вышеуказанной строки один раз, isMenuVisible будет !isMenuVisible/true. После другого выполнения isMenuVisible будет !isMenuVisible/false. isMenuVisible меняется в каждом исполнении.

isMenuVisible = true:

Это просто присвоение true на isMenuVisible все время.

0 голосов
/ 31 августа 2018

. В первом случае isMenuVisible ложно, поэтому !isMenuVisible будет истинно;

isMenuVisible =!isMenuVisible установит значение isMenuVisible будет меняться при каждом click событии

Во втором случае вместо присвоения значения через переменную true напрямую присваивается isMenuVisible, и значение никогда не будет toggle

...