Switch Case 未显示正确的结果
Switch Case not showing correct results
这是我的脚本
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;
}
我认为它应该显示'Yes Freaking Failed'
因为标记少于20。但它显示'Cant say u maybe Flunked'
这是为什么?
当您使用 switch 语句时,您正在评估标记并将标记的值与案例进行比较。并且您有以下情况:1、0、0、默认值。这是因为 (marks<20) 计算结果为 true,即 1,而其他两个为 false,即 0。
所以你应该做 if 和 else if 在你的情况下。
从技术上讲这是不可能的。 Javascript 做到了。
如果需要比较,用if/else if/else.
开关盒适用于您知道您将拥有特定值的情况。
var marks=11;
switch(marks){
case (11):
console.log('It would go in here');
break;
case (42):
console.log('If equal to 42');
break;
case (80):
console.log('if equal to 80.');
break;
default:
console.log('Cant say u maybe Flunked');
break;
}
您的代码等同于:
var marks=11;
switch(marks){
case (true):
console.log('Yes Freaking Failed');
break;
case (false):
console.log('Ahh Its Ok');
break;
case (false):
console.log('Whooping');
break;
default:
console.log('Cant say u maybe Flunked');
break;
}
marks
不是 true
也不是 false
- 所以 switch
转到 default
.
写的时候
switch (x) {
case(y):
...
}
相当于测试
if (x == y) {
...
}
所以
case (marks < 20):
表示:
if (marks == (marks < 20)) {
您不能使用 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');
}
另请注意,如果它按您想象的方式工作,它永远不会执行 marks > 80
,因为它也会匹配 marks > 20
,并且总是会执行第一个匹配的情况。
不需要 Cant say u maybe flunked
的情况,因为没有其他的可能性。
这是我的脚本
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;
}
我认为它应该显示'Yes Freaking Failed'
因为标记少于20。但它显示'Cant say u maybe Flunked'
这是为什么?
当您使用 switch 语句时,您正在评估标记并将标记的值与案例进行比较。并且您有以下情况:1、0、0、默认值。这是因为 (marks<20) 计算结果为 true,即 1,而其他两个为 false,即 0。 所以你应该做 if 和 else if 在你的情况下。
从技术上讲这是不可能的。 Javascript 做到了。
如果需要比较,用if/else if/else.
开关盒适用于您知道您将拥有特定值的情况。
var marks=11;
switch(marks){
case (11):
console.log('It would go in here');
break;
case (42):
console.log('If equal to 42');
break;
case (80):
console.log('if equal to 80.');
break;
default:
console.log('Cant say u maybe Flunked');
break;
}
您的代码等同于:
var marks=11;
switch(marks){
case (true):
console.log('Yes Freaking Failed');
break;
case (false):
console.log('Ahh Its Ok');
break;
case (false):
console.log('Whooping');
break;
default:
console.log('Cant say u maybe Flunked');
break;
}
marks
不是 true
也不是 false
- 所以 switch
转到 default
.
写的时候
switch (x) {
case(y):
...
}
相当于测试
if (x == y) {
...
}
所以
case (marks < 20):
表示:
if (marks == (marks < 20)) {
您不能使用 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');
}
另请注意,如果它按您想象的方式工作,它永远不会执行 marks > 80
,因为它也会匹配 marks > 20
,并且总是会执行第一个匹配的情况。
不需要 Cant say u maybe flunked
的情况,因为没有其他的可能性。