js中的switch语句

outerCls() {
const { state } = this;
// if ([1, 2].includes(state)) return 'Online';
// if ([4].includes(state)) return 'Offline';
// if ([0].includes(state)) return 'yellow';
// if ([3].includes(state)) return 'blue';
let color = 'NeverOnline';
switch (state) {
case 0:
color = 'yellow';
break;
case 1:
color = 'NeverOnline';
break;
case 2:
color = 'Online';
break;
case 3:
color = 'blue';
break;
case 4:
color = 'Offline';
break;
case 5:
color = 'NeverOnline';
break;
};
return color;
}

js中的switch语句可以把它看作为if else if else的简化版本:

switch (num) {
case 2:
// 执行的代码
break;
case 42:
// 执行的代码
break;
default:
// 执行的代码
}

上述代码传入的num参数会与case表达式依次进行比较,如果匹配就执行该case中的代码,直到break或者 switch代码块执行结束。

注意:
不要忘记写break语句,否则该case代码执行完不会结束会继续向下执行。
num和 case 表达式的匹配算法与 === 相同,所以在输入简单值得时候就没有问题,需要转换类型的时候就需要自己处理一下,比如:

var a = "42"; 
switch (true) {
case a == 10:
console.log( "10 or '10'" );
break;
case a == 42;
console.log( "42 or '42'" );
break;
default:
// 永远执行不到这里
}
// 42 or '42'