JavaScript switch 语句
JavaScript switch 语句
switch 语句是另一个用于多条件判断的控制流语句,它的作用是根据一个变量的值来执行不同的代码块。相比 if...else if...else 语句,switch 语句对于多个不同条件的判断来说更简洁、更易读。
基本语法
switch (expression) {
case value1:
// 如果 expression 的值与 value1 匹配,执行这部分代码
break;
case value2:
// 如果 expression 的值与 value2 匹配,执行这部分代码
break;
case value3:
// 如果 expression 的值与 value3 匹配,执行这部分代码
break;
default:
// 如果 expression 的值与所有 case 都不匹配,执行这部分代码
}
示例:基本的 switch 语句
let day = 2;
switch (day) {
case 1:
console.log("今天是星期一");
break;
case 2:
console.log("今天是星期二");
break;
case 3:
console.log("今天是星期三");
break;
default:
console.log("无效的日期");
}
在这个例子中,switch 根据 day 的值来匹配对应的 case。如果 day 的值为 2,则输出“今天是星期二”。如果没有任何 case 匹配 day 的值,则执行 default 部分。
break 语句
break 语句用于在 case 匹配后退出 switch 语句。如果没有 break,会继续执行下一个 case,这就是所谓的“穿透(fall through)”。
let fruit = "apple";
switch (fruit) {
case "apple":
console.log("这是苹果");
break;
case "banana":
console.log("这是香蕉");
break;
case "orange":
console.log("这是橙子");
break;
default:
console.log("未知的水果");
}
如果 fruit 是 "apple",会输出 "这是苹果" 并停止继续执行;如果没有 break,switch 会继续检查其他的 case,直到找到匹配的 case 或到达 default。
没有 break 的穿透行为
如果不使用 break,switch 会继续执行下一个 case 代码块,直到遇到 break 或者结束 switch 语句。
let color = "red";
switch (color) {
case "red":
console.log("红色");
case "green":
console.log("绿色");
case "blue":
console.log("蓝色");
default:
console.log("未知颜色");
}
输出:
红色
绿色
蓝色
未知颜色
这里,color 的值是 "red",所以 console.log("红色") 会首先执行,但由于没有 break,它会继续执行后面的 case 代码块,直到最后执行 default。
switch 与数据类型
switch 语句的比较是 严格比较(即 ===),这意味着 switch 语句会考虑数据类型,所以只有 expression 和 case 的值 类型和数值都相同,才会匹配。
let x = 1;
switch (x) {
case "1": // 字符串类型
console.log("这是字符串 1");
break;
case 1: // 数字类型
console.log("这是数字 1");
break;
default:
console.log("没有匹配的值");
}
输出:
这是数字 1
在这个例子中,虽然 x 的值是 1,但是 switch 语句会严格检查类型。case "1" 是字符串,而 x 是数字,因此没有匹配 case "1",最终匹配的是 case 1。
总结
switch语句用于根据一个变量的值来执行不同的代码块。- 它比多个
if...else if...else语句更简洁,尤其适合条件分支较多的情况。 case后的值会严格比较(即===),因此数据类型必须一致才能匹配。break用于退出switch语句,否则会继续执行后续的case,直到结束或遇到break。default用于处理没有匹配到任何case时的默认情况。
更多详细内容请关注其他相关文章!