javascriptdomunexpected-token

Javascript, unexpected token ' ) '


this is my first question here in StackOverflow. I'm learning JS fundamentals. I've tried to re-examine from top to the bottom of the code that I've written and the 'unexpected token ')' ' keeps on reappearing. I rewrote the whole code from a video to make sure I wrote by myself and understand every line of the code as well as making myself familiar to write codes. I've tried to erase the last line code '})' but I wonder why does the error still occur. I hope anyone can help me, this is frustrating !

const secretNumber = Math.trunc(Math.random() * 20) + 1;
let score = 20;
document.querySelector('.number').textContent = secretNumber;

document.querySelector('.check').addEventListener('click',
    function() {
            const guess = Number(document.querySelector('.guess').value);
            console.log(guess, typeof guess);
            if (!guess) {
                document.querySelector('.message').textContent = 'No Number!';
            } else if (guess === secretNumber) {
                document.querySelector('.message').textContent = 'Correct Number!';
            } else if (guess > secretNumber) {
                if (score > 1) {
                    document.querySelector('.message').textContent = 'Too High!';
                    score--;
                    document.querySelector('.score').textContent = score;
                } else {
                    document.querySelector('.message').textContent = 'You lost the game!';
                    document.querySelector('.score').textContent = 0;
                }
            } else if (guess > secretNumber) {
                if (score > 1) {
                    document.querySelector('.message').textContent =
                        'Too low!';
                    score--;
                    document.querySelector('.score').textContent =
                        score;
                } else {
                    document.querySelector('.message').textContent =
                        'You lost the game!';
                    document.querySelector('.score').textContent = 0;
                };
            });

Solution

  • 
    const secretNumber = Math.trunc(Math.random() * 20) + 1;
    let score = 20;
    document.querySelector('.number').textContent = secretNumber;
    
    document.querySelector('.check').addEventListener('click',
    function() {
        const guess = Number(document.querySelector('.guess')
            .value);
        console.log(guess, typeof guess);
        if (!guess) {
            document.querySelector('.message').textContent =
                'No Number!';
        } else if (guess === secretNumber) {
            document.querySelector('.message').textContent =
                'Correct Number!';
        } else if (guess > secretNumber) {
            if (score > 1) {
                document.querySelector('.message').textContent =
                    'Too High!';
                score--;
                document.querySelector('.score').textContent =
                    score;
            } else {
                document.querySelector('.message').textContent =
                    'You lost the game!';
                document.querySelector('.score').textContent = 0;
            }
        } else if (guess > secretNumber) {
            if (score > 1) {
                document.querySelector('.message').textContent =
                    'Too low!';
                score--;
                document.querySelector('.score').textContent =
                    score;
            } else {
                document.querySelector('.message').textContent =
                    'You lost the game!';
                document.querySelector('.score').textContent = 0;
            };
        }
    });
    

    You hadn't closed your last if statement else if (guess > secretNumber)

    Consistent indenting and Sublime text both help solve this problem, see the image below...

    enter image description here

    You can see the closing function }) is one indent deeper than the opening which indicates a unclosed statement. We can also tell by Sublime Texts error highlighting.