javascript - 可变阴影导致功能失败
问题描述
我对范围概念感到困惑,首先我在全局范围内声明了一个 let。
'use strict';
let secretNumber = Math.trunc(Math.random()* 20)+ 1;
let score = 20;
let highscore = 0;
和游戏逻辑
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'
};
;
}
})
我正在尝试实现再次播放逻辑但保持最高分。
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
})
我注意到我在 play-again 函数中隐藏了一个 let ,所以我对三件事感到困惑:
一世。为什么要在一个函数中重新声明一个让整个块失败的函数,因为它显然是两个不同的函数。
ii. 为什么我的检查功能在我的再次播放功能中寻找让?它不应该只寻找变量向上(父/全局范围)吗?
iii. 什么原因,当我再次点击播放时,整个块只会寻找新声明的变量而忽略前一个,导致高分if else语句失败?
如果您愿意帮助解释这个概念,请提前感谢你们。
ps最后一个问题已关闭,决定发布一个新问题并提供更多详细信息。
解决方案
推荐阅读
- jquery - 监听页面更改事件
- java - 单击选项卡时JavaFX什么都不做
- apache-spark - Hive 分区、分桶和排序表 - 多个插入
- node.js - 使用 Node Js 的 AWS Lambda 在 http.request() 上提供“连接 ETIMEDOUT”
- python - __getitem__ 的 idx 如何在 PyTorch 的 DataLoader 中工作?
- javascript - scrollTop 在 iOS Safari 上的行为完全相反
- javascript - 我们可以使用 jsx 字段生成对象吗?
- javascript - 从 Object.freeze 获取随机对象
- javascript - Meteor 1.8.1 SSL 双连接
- stormcrawler - AWS 节点上的 Storm-crawler 种子注入失败