switch语句中的常见情况
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了switch语句中的常见情况相关的知识,希望对你有一定的参考价值。
我需要执行常见案例然后执行具体案例,这就是我正在做的事情:
let array = ['foo', 'bar', 'baz'];
array.forEach(element => {
switch (element) {
case 'baz':
console.log('its baz');
break;
case 'foo':
case 'bar':
console.log('its foo or bar');
case 'foo':
console.log('its foo');
break;
case 'bar':
console.log('its bar');
break;
default:
break;
}
});
输出:
its foo or bar
its foo
its foo or bar
its foo // expected: 'its bar'
its baz
它适用于foo
但不适用于bar
。我错过了什么?
答案
Switch-case以这种方式工作:控制从switch语句转移到第一个匹配,然后执行所有语句(包括来自其他情况的语句),直到遇到break语句。此行为称为fallthrough。
所以,每当这个案例被切换到时,
case 'foo':
case 'bar':
console.log('its foo or bar');
这种情况总是被称为:
case 'foo':
console.log('its foo');
原因是在第一个片段之后没有break语句。因此,控件继续执行语句,直到遇到break语句。
另一答案
您正面临的情况的原因已由@SHRAIYSH解释。以下是您可能正在寻找的另一种解决方案
let array = ['foo', 'bar', 'baz'];
array.forEach(element => {
switch (element) {
case 'baz':
console.log('its baz');
break;
case 'foo':
case 'bar':
console.log('its foo or bar');
if(element==='foo'){
console.log('its inner foo');
}else{
console.log('its inner bar')
}
break;
case 'foo':
console.log('its foo');
break;
case 'bar':
console.log('its bar');
break;
default:
break;
}
});
另一答案
您必须使用2个嵌套的switch
语句,如下所示:
let array = ['foo', 'bar', 'baz'];
array.forEach(element => {
switch (element) {
case 'baz':
console.log('its baz');
break;
case 'foo':
case 'bar':
console.log('its foo or bar');
switch (element) {
case 'foo':
console.log('its foo');
break;
case 'bar':
console.log('its bar');
break;
}
default:
break;
}
});
另一答案
试试这个 :)
let array = ['foo', 'bar', 'baz'];
array.forEach(element => {
switch (element) {
case 'baz':
console.log('its baz');
break;
case 'foo':
case 'bar':
console.log('its foo or bar');
case 'foo':
if (element === 'foo') {
console.log('its foo');
break;
}
case 'bar':
console.log('its bar');
break;
default:
break;
}
});
以上是关于switch语句中的常见情况的主要内容,如果未能解决你的问题,请参考以下文章