JavaScript条件语句中,if适用于布尔判断、范围比较和逻辑组合,switch适用于多个固定值的严格相等匹配;if支持else if链,switch需用break防穿透且建议加default。

JavaScript条件语句用来根据不同的条件执行不同的代码块,最常用的是 if 和 switch。它们不是互斥的,而是适用场景不同:简单真假判断用 if,多个固定值分支判断用 switch。
if 语句:处理布尔逻辑和范围判断
if 适合做真假判断、比较运算、逻辑组合,也支持 else if 和 else 多分支结构。
- 基本写法:先写
if (条件),条件为真时执行大括号内代码 - 条件可以是表达式,比如
a > 5、str === "hello"、!isEmpty - 单条语句可省略大括号(不推荐),但多行或嵌套时必须加
- 避免把赋值
=误写成相等==或===,尤其在条件里
示例:
let score = 85;
if (score >= 90) {
console.log("优秀");
} else if (score >= 80) {
console.log("良好");
} else if (score >= 60) {
console.log("及格");
} else {
console.log("不及格");
}
switch 语句:匹配多个确定值
switch 更适合判断一个变量是否等于若干个具体值(如状态码、选项、枚举),它基于严格相等 === 匹配,不进行类型转换。
立即学习“Java免费学习笔记(深入)”;
- 每个
case后要跟break,否则会“穿透”执行后续 case(这是常见 bug 来源) -
default相当于 else,建议始终加上,增强健壮性 - case 值可以是数字、字符串、常量,但不能是变量或表达式
示例:
let day = 3;
switch (day) {
case 1:
console.log("周一");
break;
case 2:
console.log("周二");
break;
case 3:
console.log("周三");
break;
default:
console.log("无效日期");
}
if 和 switch 怎么选?看这几点
选对语句能让代码更清晰、易维护。
- 判断范围(如
x > 10 && x )、带逻辑运算、需要计算的条件 → 用if - 判断某个值是否等于几个固定选项(如菜单类型、HTTP 状态码、枚举值)→ 优先考虑
switch - 现代 JS 中,简单映射也可用对象字面量或 Map 替代 switch,更函数式(比如
handlers[status]()) - 性能上差异极小,不用刻意优化,可读性和意图表达更重要
常见陷阱和注意事项
新手容易踩坑的地方,提前避开能少调试半小时。
-
if (x = 5)是赋值,永远为真 —— 应该写if (x === 5) -
switch中漏写break会导致多个 case 连续执行 -
null、undefined、0、""、false在if中都转为false(即“falsy”值),注意区分==和=== - 嵌套太深(比如 if 里套 if 再套 if)会影响可读性,可考虑提前 return 或拆成函数











