js实现switch
实现基本的 switch 语句
在 JavaScript 中,switch 语句用于基于不同条件执行不同的代码块。基本语法如下:
switch (expression) {
case value1:
// 当 expression 等于 value1 时执行的代码
break;
case value2:
// 当 expression 等于 value2 时执行的代码
break;
default:
// 当 expression 不等于任何 case 时执行的代码
}
使用 break 防止穿透
break 关键字用于阻止 switch 语句继续执行下一个 case。如果省略 break,代码会继续执行下一个 case 的语句,直到遇到 break 或 switch 结束。
let day = 3;
switch (day) {
case 1:
console.log("Monday");
break;
case 2:
console.log("Tuesday");
break;
case 3:
console.log("Wednesday");
break;
default:
console.log("Invalid day");
}
利用穿透特性实现多条件匹配
有时可以利用 switch 的穿透特性,让多个 case 共享同一段代码:

let fruit = "apple";
switch (fruit) {
case "apple":
case "banana":
console.log("This is a common fruit");
break;
case "kiwi":
console.log("This is an exotic fruit");
break;
default:
console.log("Unknown fruit");
}
使用严格比较
switch 语句使用严格比较(===),因此值和类型都必须匹配:
let num = "1";
switch (num) {
case 1:
console.log("Number 1"); // 不会执行,因为类型不匹配
break;
case "1":
console.log("String '1'"); // 会执行
break;
}
在 switch 中使用表达式
可以在 case 中使用表达式,但需要确保表达式是常量或可以在编译时确定:

let score = 85;
switch (true) {
case score >= 90:
console.log("A");
break;
case score >= 80:
console.log("B");
break;
case score >= 70:
console.log("C");
break;
default:
console.log("D");
}
替代方案:对象字面量
对于简单的条件匹配,可以使用对象字面量作为 switch 的替代方案:
const dayMap = {
1: "Monday",
2: "Tuesday",
3: "Wednesday"
};
let day = 2;
console.log(dayMap[day] || "Invalid day");
替代方案:Map 对象
对于更复杂的情况,可以使用 Map 对象:
const fruitMap = new Map([
["apple", "Common fruit"],
["banana", "Common fruit"],
["kiwi", "Exotic fruit"]
]);
let fruit = "kiwi";
console.log(fruitMap.get(fruit) || "Unknown fruit");






