JavaScript switch 怎么用
早上想定8点的闹钟,结果手机里的闹钟APP里,“周一到周五”“周六周日”“节假日”三个选项,选对了才能准点响。其实这种“按情况选不同操作”的场景,和前端开发里的JavaScript(简称JS)switch用法一模一样——它就是个专门处理“多种情况选对应事儿做”的工具,比一堆if-else读着更清爽。
---

先搞懂:switch能解决啥问题?
平时写代码,经常要判断“满足某几种条件里的哪一个,就做对应的事”。比如要根据用户选的“星期几”,输出不同的提示:周一到周五要提醒“该上班啦”,周六周日说“好好休息”,法定节假日说“放假快乐”。
如果用if-else写,会是这样:
`js
let weekDay = 3; // 3代表周三(举例子)
if (weekDay === 1 || weekDay === 2 || weekDay === 3 || weekDay === 4 || weekDay ===5) {
console.log("该上班啦");
} else if (weekDay ===6 || weekDay ===7) {
console.log("好好休息");
} else {
console.log("放假快乐");
}
`
是不是有点绕?要是情况更多,比如加上12个月份、10个颜色选项,if-else堆成小山,自己看久了都懵。这时候switch就派上用场了,它能把“判断条件”和“对应操作”拆得清清楚楚,读起来像说话一样直白。
---
最基础的switch用法:像按按钮选操作
switch的核心逻辑是“先给一个要判断的值,再列出所有可能的情况,每种情况对应要做的事”,语法结构很固定,像一套模板:
`js
switch (要判断的值) {
case 情况1:
情况1要做的事;
break; // 关键:这个break别漏!
case 情况2:
情况2要做的事;
break;
// 还能加更多case
default:
以上情况都不满足时,做的事;
}
`
还是用刚才的星期几例子,换成switch写就清爽多了:
`js
let weekDay = 3;
switch (weekDay) {
case 1:
case 2:
case 3:
case 4:
case 5:
console.log("该上班啦");
break;
case 6:
case 7:
console.log("好好休息");
break;
default:
console.log("放假快乐");
}
`
你看,case后面直接写“可能的情况”,把同操作的情况放一块,一眼能看懂“周一到周五都要上班”,比if-else顺多了。
---
两个关键细节,别踩坑!
刚用switch的人最容易错在两个地方,记清楚就不会出问题:
第一个坑:break不能随便丢。刚才的例子里,每个case后面都有break,它的作用是“做完当前情况的事,就跳出switch,不用再检查后面的情况”。如果把break去掉,会发生啥?
比如删掉周三的break:
`js
let weekDay =3;
switch (weekDay) {
case 1:
console.log("周一");
case 3:
console.log("周三");
case 5:
console.log("周五");
break;
}
`
运行后会输出“周三”,还会输出后面的“周五”——因为没break,代码会“贯穿”所有后面的case,直到碰到break才停,这叫“穿透”,平时写代码大多不需要穿透,所以break必须加。
第二个坑:switch的判断是“严格相等”(===)。比如你判断的是数字3,如果case写的是字符串"3",哪怕内容一样,也不会匹配上。比如:
`js
let weekDay =3;
switch (weekDay) {
case "3":
console.log("匹配到啦");
break;
default:
console.log("没匹配到");
}
`
输出的是“没匹配到”,因为数字和字符串是不同类型,就像你说“3个苹果”和说“三个字的苹果”,完全不是一回事。
---
啥时候用switch,啥时候用if-else?
switch不是万能的,也不是所有情况都要用:如果判断的是“区间类条件”,比如“成绩≥90分是优秀,60-89是及格”,if-else更方便——switch只能判断“值等于某个具体值”,没法直接写case 成绩≥90这种条件。但如果是“判断多个具体值、同值对应同一操作”,比如根据月份判断季节、根据按钮类型判断要弹出的弹窗,switch会让代码更简洁,也更容易维护。
就像选外卖,点“快餐”“奶茶”“火锅”三个选项,用switch直接对应,比一堆“如果选快餐就点汉堡,如果选奶茶就点珍珠”清楚多了。