switch 语句和 if 语句一样,可以根据条件来决定是否执行代码块,它相比 if 语句,在多分支的情况下可读性更好,也就是更容易理解代码。比如说下面这个示例,我们想要根据评分来打印不同的评语。
1let rating = 5
2if (rating == 1) {
3 console.log("bad")
4} else if (rating == 2) {
5 console.log("poor")
6} else if (rating == 3) {
7 console.log("fair")
8} else if (rating == 4) {
9 console.log("good")
10} else if (rating == 5) {
11 console.log("excellent")
12}
这是使用 if 语句实现的代码,下面我们使用 switch 语句来实现同样的功能,对比是否更加直观。
1let rating = 5
2switch (rating) {
3 case 1:
4 console.log("bad")
5 break
6 case 2:
7 console.log("poor")
8 break
9 case 3:
10 console.log("fair")
11 break
12 case 4:
13 console.log("good")
14 break
15 case 5:
16 console.log("excellent")
17 break
18}
通过以上示例,我们可以看出 switch 语句的基本结构如下
1switch (判断表达式) {
2 case 值1:
3 代码1
4 break
5 case 值2:
6 代码2
7 break
8 case 值3:
9 代码3
10 break
11 default:
12 默认代码
13}
当 switch 中的判断表达式等于某个 case 中的值时,将会执行 case 中的代码,break 是用于执行完后跳出当前 switch 语句,当判断表达式不等于任意一个 case 中的值时,如果有 default 则执行 default 中的代码,否则跳过 switch 语句,直接执行后面的代码。
当 case 中没有 break 时,将不会跳出 switch 语句,而是继续执行后续的 case 代码,直到遇到 break 或者执行完毕。
1let rating = 1
2switch (rating) {
3 case 1:
4 console.log("bad")
5 case 2:
6 console.log("poor")
7 case 3:
8 console.log("fair")
9 case 4:
10 console.log("good")
11 break
12 case 5:
13 console.log("excellent")
14 break
15}
当判断表达式不等于任意一个 case 中的值时,则执行 default 中的代码。
1let rating = -1
2switch (rating) {
3 case 1:
4 console.log("bad")
5 break
6 case 2:
7 console.log("poor")
8 break
9 case 3:
10 console.log("fair")
11 break
12 case 4:
13 console.log("good")
14 break
15 case 5:
16 console.log("excellent")
17 break
18 default:
19 console.log("invalid")
20}