I am confusing about a scope concept, firstly I declared a let in global scope.
'use strict';
let secretNumber = Math.trunc(Math.random()* 20)+ 1;
let score = 20;
let highscore = 0;
and a game logic
document.querySelector('.check').addEventListener('click',function(){
let guess = Number( document.querySelector('.guess').value);
console.log(guess, typeof guess)
if(!guess){
document.querySelector('.message').textContent = '💩 Need a number!'
}
else if ( guess === secretNumber){
document.querySelector('.number').textContent =secretNumber;
document.querySelector('.message').textContent = '😎 Correct Answer ! '
if ( score > highscore){
highscore = score;
document.querySelector('.highscore').textContent = score;
}
}
else if(guess > secretNumber){
if(score > 1) {
document.querySelector('.message').textContent = '🥵 Too High'
score--;
document.querySelector('.score').textContent = score}else {
document.querySelector('.message').textContent='ou 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'
};
;
}
})
I'm trying to implement a play again logic but keep the highest score.
document.querySelector('.again').addEventListener('click',function(){
let score = 20;
document.querySelector('.message').textContent = 'Start Guessin ....'
document.querySelector('.guess').value = '';
document.querySelector('.score').textContent = score;
secretNumber = Math.trunc(Math.random()* 20)+ 1;
document.querySelector('.number').textContent = secretNumber
})
I noticed I shadowing a let in the play-again function, so I'm confusing about three things:
i. Why re-declare a let in a function causing the whole block to fail when it's clearly two different functions.
ii. Why is my check function look for the let in my play again function ? Shouldn't it be only looking for the variable upward(parent / Global scope) ?
iii. what's the reason when I clicked the play again, the whole block will only looking for the newly declared variable and ignore the previous one and causing the high-score if else statement to fail?
Thank you guys in advanced if you're willing to help explain this concept.
p.s last question got closed, decided to post a new question and provide more details.
Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW
Comments
Post a Comment