我正在编写一个记忆游戏,它允许一个警报闪烁,然后你需要记住一个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会生成一个新数字。我想知道我是否能得到一些帮助。 感谢
答案 0 :(得分:3)
问题是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?
更好地了解==
和===
答案 1 :(得分:1)
===
检查变量的值和类型。数学函数生成数字,而提示生成字符串。这就是变量总是不相等的原因。
将其替换为仅检查值的==
- 您的代码将起作用。
答案 2 :(得分:1)
您需要将提示结果转换为数字。现在,您正在与字符串和数字进行比较。
在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")
}