Javascript 无法检查提示是否为空字符串和null
这是我的密码:Javascript 无法检查提示是否为空字符串和null,javascript,if-statement,Javascript,If Statement,这是我的密码: let guessTheNumber = () => { let randomNumber = Math.round((Math.random()) * 10); //generating a random number from 1 to 10 console.log(randomNumber); //added this just to see what number was generated let quest
let guessTheNumber = () => {
let randomNumber = Math.round((Math.random()) * 10); //generating a random number from 1 to 10
console.log(randomNumber); //added this just to see what number was generated
let question = +prompt('Please, try to guess the number from 1 to 10!'); // by using unary plus I want prompt to return a number, NOT a string
if (question === randomNumber) {
alert('Wow, you are quite lucky. Nice job!'); //this one works
}
else if (question !== randomNumber) {
alert('Nope'); //this one is also easy to check
}
else if (question === "") {
alert('You did not enter anything!');
}
else {
alert('Why did you cancel?');
}
}
guessTheNumber();
当它是否等于随机数变量时,我可以成功地检查这个问题。但是,当我尝试发出警报时,如果有一个空字符串单击“确定”而没有任何输入,或者单击“取消”时为空,则程序将失败。首先,您要匹配.ceil您的随机数,而不是Math.round。然后,对于不正确的数据,请检查猜测值是否为null,而不是数字,或者是否为空字符串,并带有:
!guess || isNaN(guess) || guess.trim() === ""
让我们猜猜数字==>{
让ranNum=Math.ceilMath.random*10
请试着从1猜到10!
如果parseIntguess,则10==ranNum{
哇,你真幸运。干得好!
}否则如果!guess | | isNaNguess | | guess.trim=={
警报:您没有输入数字
}否则{
阿勒特诺普
}
console.logguess,ranNum
}
猜猜数字 提示前的+将显示,因此,如果用户取消提示或将提示留空,它将始终返回0
因此,如果需要检查cancel,则需要删除+符号,然后提示符将返回字符串或null,因此需要一些额外的逻辑
让我们猜猜数字==>{
//使用@symlink中提到的“Math.ceil”
让randomNumber=Math.ceilMath.random*10;
console.lograndom编号;
让问题=提示“请尝试从1到10猜数字!”;
//检查是否取消“空”
如果问题==null{
提醒“你为什么取消?”;
//您需要退出,这样它就不会再次提示
回来
}
//parseInt函数解析字符串参数并返回整数
如果是parseIntquestion,则为10==randomNumber{
警惕“哇,你真幸运。干得好!”;
}
//空值
如果问题=={
提醒“您没有输入任何内容!”;
//再跑一次
猜猜数字;
}
//不是数字
否则我就没问题了{
警告“请输入一个数字”;
//再跑一次
猜猜数字;
}
//错误答案
否则{
警惕“不!”
//再跑一次
猜猜数字;
}
}
猜猜数字;在+before提示下,您将强制转换为number,然后===将失败,因为第三个相等运算符将失败,因为它不是strings,它将失败,因为问题是NaN,您的条件也是。。。错误的或至少是错误的方式,无论问题等于或不等于,其他两个条件都不会被满足。您忘记检查取消,因此修剪将被null和抛出错误调用。