我的if
陈述不起作用。这是我当前的代码,问题是:
var userImput = prompt("Pick a number between 1 and 10")
var randomNum = Math.ceil(Math.random() * 10);
alert(randomNum)
if (randomNum === userImput){
alert("You win");
} else {
alert("You lose");
window.location.reload();
}
发布于 2018-09-28 10:50:27
正如评论中其他人已经说明的那样,===
只有true
当两个操作数完全相同时才返回- 这包括相同的类型。userInput
这里将是一个字符串,randomNum
而是一个数字。
可能的解决方案:
==
而不是===
,这允许值之间的类型转换,特别是将“数字”字符串"7"
转换为等价的数字7
。(这是我的首选方案,但许多开发人员不赞成使用==
Javascript - 它确实存在陷阱,对于粗心大意,但这个用例非常符合它的用途。)===,
可以使用Number
函数(即。if (randomNum === Number(userInput))
)最明确地执行此操作,但常见的简写是使用“一元加”运算符:if (randomNum === +userInput)
。另一个替代方案是parseInt
函数,它应该在这里工作相同(如果字符串有一些数字字符后跟非数字字符,它的行为与其他字符不同)。https://stackoverflow.com/questions/-100002777
复制相似问题