Javascript内存游戏难题

Javascript内存游戏难题,javascript,Javascript,我正在编写一个记忆游戏,让一个警报以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 {

我正在编写一个记忆游戏,让一个警报以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会生成一个新的数字。我想知道我是否能得到一些帮助。
谢谢

问题在于
答案
是一个字符串,
mathRandom
是一个数字。您使用的是不强制类型的
==
。您需要将
答案
转换为一个数字,然后比较:

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

或者您可以使用
=
操作符:

if (answer == mathRandom) {
    alert("Well Done");
}
它将自动将
mathRandom
中的数字转换为字符串

另见这个问题:


为了更好地理解
=
==
==
之间的差异,请检查变量的值和类型。数学函数生成数字,而提示符生成字符串。这就是变量总是不相等的原因

将其替换为只检查值的
==
,您的代码将正常工作


演示:

您需要将提示结果转换为数字。现在,您正在使用字符串和数字进行比较

在JavaScript中:

750 !== "750";
750 === parseInt("750", 10);
以下是修复方法:

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

alert(mathRandom);

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

@如果解决方案对您有效,请接受答案。
var mathRandom = Math.round(Math.random() * 10000);

alert(mathRandom);

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