不返回真

Not returning true

我刚刚开始使用 Javascript 并尝试学习,目前只是基础知识。 但老实说,我不明白这个 switch 语句是如何 returns false if age = 0

function isUnderAge(age){
    const MAXNUMBER = 120;
    const MAXAGE = 18;
    const MINAGE = 0;
    switch(age){
        case(age < MAXAGE && age >= MINAGE && age <= MAXNUMBER):
            return true;

        default:
            return false;
    }
}

console.log(isUnderAge(0));

还有其他人看到这个问题吗?

非常感谢任何帮助!

您正在比较 ageboolean 因为 age < MAXAGE && age >= MINAGE && age <= MAXNUMBER 导致 boolean 值所以它总是 return false

在你的例子中 age0,它与 age < MAXAGE && age >= MINAGE && age <= MAXNUMBER 相比较导致 true。所以比较 0 === true 不匹配所以它将转到 default case

function isUnderAge(age) {
  const MAXNUMBER = 120;
  const MAXAGE = 18;
  const MINAGE = 0;

  if (age < MAXAGE && age >= MINAGE && age <= MAXNUMBER) {
    return true;
  } else {
    return false;
  }
}

isUnderAge(12);
isUnderAge(40);

这并不是 switch 的真正用例。看看下面:

function isUnderAge(age){
    const MAXNUMBER = 120;
    const MAXAGE = 18;
    const MINAGE = 0;
    
    if(age < MAXAGE && age >= MINAGE && age <= MAXNUMBER)
    {
        return true;
    }
    return false;
}

console.log(isUnderAge(0), isUnderAge(17), isUnderAge(20), isUnderAge(130));

更简洁的选择

function isUnderAge(age) {      
  const MAXNUMBER = 120;
  const MAXAGE = 18;
  const MINAGE = 0;

  if(age < MINAGE) return true;
  return (age < MAXAGE) && (age <= MAXNUMBER) ? true : false;
}

console.log(isUnderAge(18));
console.log(isUnderAge(-1));
console.log(isUnderAge(17));

正如评论所说,您在每种情况下都会得到一个布尔值。 就像你说的 case true return true case false return false 其中 switch 将回退到默认情况 如果你使用 switch

也不要忘记 break