我正在编写一个记忆游戏,它允许警报以5-6位代码闪烁,然后您必须记住该代码并将其放入提示框中。这是我到目前为止的代码:

var mathRandom = (Math.round(Math.random()*10000))

alert(mathRandom);

var answer=prompt("What is the number?");
if(answer === mathRandom)
    {
        alert("Well done")
    }
    else
    {
        alert("Wrong")
    }

我的代码的问题在于,即使正确无误,警报也会说错了,我认为这是因为当我检查变量是否相等时,mathrandom会生成一个新数字。我想知道是否能有所帮助。
谢谢

最佳答案

问题在于answer是字符串,而mathRandom是数字。您正在使用不强制类型的===。您需要将answer转换为数字,然后进行比较:

if (+answer === mathRandom) {
    alert("Well Done");
}

要么:
if (parseInt(answer) === mathRandom) {
    alert("Well Done");
}

或者,您可以只使用==运算符:
if (answer == mathRandom) {
    alert("Well Done");
}

它将自动将mathRandom中的数字转换为字符串。

另请参阅此问题:Which equals operator (== vs ===) should be used in JavaScript comparisons?

为了更好地了解=====之间的区别

09-26 22:37