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和抛出错误调用。