// It is simple code
var num = prompt("put number");
// This way is not worked
switch (num) {
case num > 0:
console.log("num++");
break;
case num < 0:
console.log(num-2);
break;
}
// But this worked
if (num > 0){
console.log(num++);
} else if (num < 0){
console.log(num -2);
}
我通过“ switch”操作的第一种方法不起作用,但是“ if”方法有效。
我尝试了所有用于更改代码或其他方式的事情,但结果相同。
请大家帮我。
答案 0 :(得分:6)
由于您num > 0
中的语句case
将返回true
或false
。
如果您这样做:
switch (true) {
case num > 0:
console.log("num++");
break;
case num < 0:
console.log(num-2);
break;
}
它将起作用。
答案 1 :(得分:0)
案例不能是表达式,您必须先对输入进行规范化。
尽管将表达式放在case
中是有效的,但是在这种情况下,一种更可靠的处理方式是首先对输入进行规范化。
您可以确定方向,例如:
var num = parseInt(prompt("put number"), 10);
var direction = num < 0 ? -1 : 1;
switch (direction) {
case 1:
console.log("num++");
break;
case -1:
console.log(num - 2);
break;
}
答案 2 :(得分:0)
该开关用作案例切换器,这意味着您无法进行比较以创建案例,只能按案例列出案例,并无法执行此案例中的某些功能。 if / else结构适合进行比较,因为if调用中的预期结果始终是布尔值。
示例:
const a = 1;
if (a === 1) {
console.log('hello');
} else {
console.log('sad');
switch (a) {
case 1 : console.log('hello'); break;
default: console.log('sad'); break;
在您的情况下,我建议您使用if / else if / else,因为它是更推荐的选择。