我有一个问题:每当代码运行时,输出都是false。为什么呢?
function isGreaterThan (numberOne, numberTwo) {
switch (isGreaterThan) {
case numberOne > numberTwo:
return true;
break;
default:
return false;
break;
}
}
console.log(isGreaterThan(67, 2));
答案 0 :(得分:4)
您可以简化此操作,以避免滥用switch语句:
function isGreaterThan (numberOne, numberTwo) {
return numberOne > numberTwo;
}
console.log(isGreaterThan(67, 2));
你的switch语句不正确,因为你需要传入一个条件,并在每个case语句中评估结果。
答案 1 :(得分:2)
这段代码很混乱。首先,您需要向switch
提供对其所在功能的引用,而不是数值。
你可以大大简化这种情况:
function isGreaterThan (numberOne, numberTwo) {
return numberOne > numberTwo; //return the result of the comparison
}
答案 2 :(得分:0)
您的功能显然无法按预期工作,因为您使用的是switch
错误的方法。
首先,您正在使用函数本身作为表达式
进行切换switch (isGreaterThan) {
然后,您将它与另一个表达式进行比较
case numberOne > numberTwo:
这相当于
if ( isGreaterThan == (numberOne > numberTwo))
此检查永远不会成立,因为isGreaterThan
甚至不是布尔值,但(numberOne > numberTwo)
是
因此,此开关将始终回退到默认语句
default:
return false;
break;
这就是为什么这个函数总会返回false
正如其他人已经提到的,你的功能可以用这种简单的形式
function isGreaterThan (numberOne, numberTwo) {
return numberOne > numberTwo;
}
现在,如果你想要一个建议,我真的认为你不明白switch
的工作原理,所以请退后一步learn它应该如何工作。在这种情况下,没有理由使用开关。
顺便说一句,你案例中的三元运算符(如标题中所提到的)就像
一样(numberOne > numberTwo) ? true : false