不返回真
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));
还有其他人看到这个问题吗?
非常感谢任何帮助!
您正在比较 age
和 boolean
因为 age < MAXAGE && age >= MINAGE && age <= MAXNUMBER
导致 boolean
值所以它总是 return false
在你的例子中 age
是 0
,它与 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
我刚刚开始使用 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));
还有其他人看到这个问题吗?
非常感谢任何帮助!
您正在比较 age
和 boolean
因为 age < MAXAGE && age >= MINAGE && age <= MAXNUMBER
导致 boolean
值所以它总是 return false
在你的例子中 age
是 0
,它与 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