Mar*_*ini 2 javascript switch-statement
这是我的脚本
var marks = 11;
switch (marks) {
case (marks < 20):
console.log('Yes Freaking Failed');
break;
case (marks > 20):
console.log('Ahh Its Ok');
break;
case (marks > 80):
console.log('Whooping');
break;
default:
console.log('Cant say u maybe Flunked');
break;
}
Run Code Online (Sandbox Code Playgroud)
我认为它应该显示,'Yes Freaking Failed'因为分数小于 20。但它显示'Cant say u maybe Flunked'
这是为什么?
当你写的时候
switch (x) {
case(y):
...
}
Run Code Online (Sandbox Code Playgroud)
相当于测试
if (x == y) {
...
}
Run Code Online (Sandbox Code Playgroud)
所以
case (marks < 20):
Run Code Online (Sandbox Code Playgroud)
方法:
if (marks == (marks < 20)) {
Run Code Online (Sandbox Code Playgroud)
您不能用于case这样的范围测试,您需要使用一系列if/else if:
if (marks < 20) {
console.log('Yes Freaking Failed');
} else if (marks < 80) {
console.log('Ahh Its OK');
} else {
console.log('Whooping');
}
Run Code Online (Sandbox Code Playgroud)
另请注意,如果它按照您想象的方式工作,它永远不会执行marks > 80,因为它也会匹配marks > 20,并且始终执行第一个匹配的情况。
这个案子没有必要Cant say u maybe flunked,因为没有其他的可能性。