Нужна помощь о булевых - PullRequest
       5

Нужна помощь о булевых

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

Я следую за буткемпом веб-разработчика Colt Steele и занимаюсь им в упражнении Score Keeper, но я застрял в одной вещи, которую пока не совсем понимаю. Поэтому он установил для переменной gameOver значение false (var gameOver = false) и в операторе if он использовал if (! GameOver) {....}. Что значит! GameOver? Я знаю, что в данном случае это означает не ложь, так что если не ложь, то запустить код? Затем он устанавливает для gameOver значение true в вложенном операторе if, так что я знаю, когда gameOver устанавливает значение true, тогда все условие становится истинным, когда оператор достигает его, верно? Что позже означает, что код больше не будет работать, потому что он достиг "true"? Может кто-нибудь точно объяснить мне это более подробно? Я в замешательстве, особенно если учесть, что я впервые увидел отрицание имени переменной, которое было установлено равным булевому значению, особенно во время оператора if. Вот код:

var p1Button = document.querySelector("#p1");
var p2Button = document.getElementById("p2");
var p1Display = document.querySelector("#p1Display");
var p2Display = document.querySelector("#p2Display");
var p1Score = 0;
var p2Score = 0;
var gameOver = false;
var winningScore = 5;

p1Button.addEventListener("click", function(){
    if (!gameOver) {
        p1Score++;
        if (p1Score === winningScore) {
            gameOver = true;
        }
        p1Display.textContent = p1Score;
    }

});

p2Button.addEventListener("click", function(){
    if (!gameOver) {
        p2Score++;
        if (p2Score === winningScore) {
            gameOver = true;
        }
        p2Display.textContent = p2Score;
    }
});

1 Ответ

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

if (!gameOver) - это сокращение от:

if (gameOver != true) {} // (gameOver is not true)

Так что же происходит: Когда вы нажимаете на кнопку, это увеличивает счет. Когда счет совпадает с выигрышным счетом (p1Score === winningScore) Тогда gameOver устанавливается в true и игра заканчивается.

Он использует ===, потому что это означает: p1Score must be exact the same as victoryScore. Это потому, что 1 и 0 также являются логическими значениями. Так что это может дать какой-то неожиданный результат

...