布尔值为字符串返回false - 需要为true

0 javascript if-statement boolean user-input input

在此程序中,任何数字的输入低于0或高于或高于121字符串应返回为'Invalid Input'.但是,输入字符串时,将FULL_PRICE返回该字符串.

const LOW_AGE = 5,
  HIGH_AGE = 69,
  MID_AGE = 17,
  MAX_AGE = 120,
  FULL_PRICE = "You must pay full price.",
  HALF_PRICE = "You must pay half price.",
  FREE = "You may travel for free";

function main() {
  var age, inputError, cost;

  age = Number(prompt("Enter Your Age:"));

  if (age < 0 || age > MAX_AGE || age == NaN)
    inputError = true;
  else
    inputError = false;

  if (age < LOW_AGE || age > HIGH_AGE)
    cost = FREE;
  else if (age < MID_AGE)
    cost = HALF_PRICE;
  else
    cost = FULL_PRICE;

  if (inputError)
    alert("Input Error.");
  else
    alert(String(cost));
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我试图false通过使用来触发字符串age == NaN.

我也试图进入age == String.

肯定会返回true一个字符串?

VTo*_*rov 5

JavaScript中有一点点.NaN == NaNfalse,NaN === NaNfalse,太.如果你想比较一些东西来NaN使用这个isNaN()功能.

例:

if (age < 0 || age > MAX_AGE || isNaN(age)) 
  inputError = true;
Run Code Online (Sandbox Code Playgroud)