Switch 语句允许我们基于不同的条件来执行不同的代码。它提供了另一种处理多分支逻辑的方法,可以替代多个 if-else 语句的嵌套。
开始使用 Switch 语句
Switch 语句的基本语法如下:
// www.javascriptcn.com code example
switch (expression) {
case value1:
// 当 expression 等于 value1 时执行的代码
break;
case value2:
// 当 expression 等于 value2 时执行的代码
break;
default:
// 当 expression 不等于任何 case 中的值时执行的代码
}示例:基本 Switch 语句
假设我们有一个简单的程序,根据一天中的时间显示问候语:
// www.javascriptcn.com code example
function getGreeting(timeOfDay) {
switch (timeOfDay) {
case 'morning':
console.log('早上好!');
break;
case 'afternoon':
console.log('下午好!');
break;
case 'evening':
console.log('晚上好!');
break;
default:
console.log('你好!');
}
}
getGreeting('morning'); // 输出: 早上好!
getGreeting('afternoon'); // 输出: 下午好!
getGreeting('evening'); // 输出: 晚上好!
getGreeting('night'); // 输出: 你好!在这个例子中,getGreeting 函数接收一个表示一天中某个时段的字符串参数 timeOfDay。根据传入的值,函数会输出相应的问候语。如果传入了一个不在 case 语句中的值,则会执行默认部分的代码。
使用表达式作为 switch 的条件
Switch 语句不仅限于使用字符串,还可以使用任何可以比较的值。例如,我们可以用数字或变量来决定执行哪一部分代码:
// www.javascriptcn.com code example
let age = 25;
switch (age) {
case 18:
console.log('刚刚成年!');
break;
case 25:
console.log('黄金年龄!');
break;
case 60:
console.log('退休了!');
break;
default:
console.log('其他年龄段');
}在这个例子中,根据变量 age 的不同值,将输出不同的信息。
多个 case 共享相同代码块
有时候,几个 case 语句可能会需要执行相同的代码块。这种情况下,你可以省略多个 case 后面的 break 语句,从而让代码继续向下执行:
// www.javascriptcn.com code example
function getDayOfWeek(day) {
switch (day) {
case 0:
case 6:
console.log('周末');
break;
case 1:
case 2:
case 3:
case 4:
case 5:
console.log('工作日');
break;
}
}
getDayOfWeek(0); // 输出: 周末
getDayOfWeek(6); // 输出: 周末
getDayOfWeek(3); // 输出: 工作日在这个例子中,case 0 和 case 6 都输出“周末”,因此没有使用 break 语句,使得程序能够连续执行这两个 case 对应的代码。
使用 fall-through 特性
尽管通常情况下每个 case 都应该有 break 语句,但在某些情况下,我们可能希望多个 case 语句共享相同的代码块。在这种情况下,我们可以利用 fall-through 特性,即不使用 break 语句,让代码继续执行下一个 case:
// www.javascriptcn.com code example
function describeNumber(num) {
switch (true) {
case num > 10:
console.log('大于 10');
break;
case num > 5:
console.log('大于 5 但小于等于 10');
break;
case num > 0:
console.log('大于 0 但小于等于 5');
break;
default:
console.log('小于等于 0');
}
}
describeNumber(11); // 输出: 大于 10
describeNumber(7); // 输出: 大于 5 但小于等于 10
describeNumber(3); // 输出: 大于 0 但小于等于 5
describeNumber(-2); // 输出: 小于等于 0在这个例子中,我们使用了 switch(true) 结构,并且没有使用 break 语句,因此代码可以根据条件顺序执行。
总结
通过以上的讲解和示例,你应该已经掌握了如何使用 JavaScript 中的 Switch 语句。Switch 语句是一种非常有用的控制结构,可以帮助我们更清晰地组织多分支逻辑。希望这些知识能帮助你在实际项目中更好地应用它。