语法:
switch (expression) {
case value1:
// code block for value1
break;
case value2:
// code block for value2
break;
// more cases...
default:
// code block if no cases match
}
expression
: 需要进行比较的值或表达式。case value
: 每个case
后面跟着一个值,与expression
的结果进行比较。break
: 跳出switch
语句,防止执行后续的case
代码块。如果省略break
,代码会继续执行到下一个case
,这种行为称为 "fall-through"。default
: 可选的,用于在没有匹配任何case
时执行的代码块。
应用场景
- 多个条件检查: 当需要根据一个变量的不同值来执行不同的代码块时,
switch
语句可以使代码更加简洁明了。 - 取代多个
if-else
语句: 当有很多条件需要判断时,使用switch
语句通常比使用多个if-else
语句更具可读性。
示例代码
示例 1: 简单的 switch
语句
let day = 3;
let dayName;
switch (day) {
case 1:
dayName = "Monday";
break;
case 2:
dayName = "Tuesday";
break;
case 3:
dayName = "Wednesday";
break;
case 4:
dayName = "Thursday";
break;
case 5:
dayName = "Friday";
break;
case 6:
dayName = "Saturday";
break;
case 7:
dayName = "Sunday";
break;
default:
dayName = "Invalid day";
}
console.log(dayName); // Output: Wednesday
在这个例子中,switch
语句根据 day
的值来确定 dayName
。因为 day
是 3,所以 dayName
被设置为 "Wednesday"。
示例 2: 使用 switch
处理字符串值
let fruit = "apple";
let color;
switch (fruit) {
case "apple":
color = "red";
break;
case "banana":
color = "yellow";
break;
case "grape":
color = "purple";
break;
default:
color = "unknown";
}
console.log(color); // Output: red
在这个例子中,switch
语句根据 fruit
的值来确定 color
。因为 fruit
是 "apple",所以 color
被设置为 "red"。
示例 3: 不使用 break
造成的 "fall-through"
let grade = 'B';
let message;
switch (grade) {
case 'A':
message = 'Excellent';
break;
case 'B':
message = 'Good';
// Note: No break here, so it will fall through
case 'C':
message += ' - Average';
break;
default:
message = 'Unknown grade';
}
console.log(message); // Output: Good - Average
在这个例子中,grade
为 'B',所以 message
首先被设置为 'Good',由于没有 break
,执行继续到 case 'C'
,message
被追加了 ' - Average'。如果你希望在每个 case
后面结束执行,需要确保添加 break
。
总结
- 技术:
switch
语句通过与表达式的结果进行比较,执行匹配的代码块。使用break
语句来防止不必要的代码执行。 - 应用场景: 多条件检查、替代多个
if-else
语句。 - 示例代码: 提供了基于数字和字符串的
switch
语句示例,展示了如何处理不同的条件,并说明了 "fall-through" 行为。