【发布时间】:2021-05-29 21:50:58
【问题描述】:
这是一个关于 IF 语句中 NaN 的初学者 JS 问题。我有下面的代码提示用户输入一个数字,程序将生成一个介于 1 和用户输入之间的随机数。但是,如果用户没有输入数字,它会提示用户重试并输入有效数字。
const userInput = prompt("Please enter a number.");
const userNumber = parseInt(userInput);
if (userNumber) {
const randomNumber = Math.floor( Math.random() * userNumber ) + 1;
console.log(`${randomNumber} is a number between 1 and ${userNumber}`);
} else {
console.log(`Please enter a valid number.`);
}
我的问题是 IF 语句的 userNumber 部分。条件基本上是询问 IF userNumber 是一个数字,然后输出随机数。但是为什么它只是简单地写在条件中的变量,而不是 if (userNumber != NaN) 或 if (userNumber == number) 之类的条件?为什么它只是条件中的变量?
对我来说,阅读那行代码我在想:“......如果 userNumber 是什么?在 userNumber 之后什么都没有,那么条件是什么?”
【问题讨论】:
-
这不是
if (userNumber)所做的。它检查它是否真实。因为它是parseInt的返回值,所以它将是number类型,并且该类型中只有两个值不是truthy:NaN...和0。如果用户输入0,它会将其视为无效数字而忽略。您可能还想更好地处理负数... -
如果要专门测试
NaN,请使用if( isNaN(userNumber))
标签: javascript