JavaScript条件语句核心是if/else if/else、三元运算符及switch;需严防=与===混淆,优先用===避免隐式转换,多条件注意短路行为,嵌套勿超三层,三元仅用于简单表达式赋值,switch适用于同一变量的离散值匹配且须加break与default。
JavaScript 条件语句核心就三条:if、else if、else,外加一个简洁的三元运算符 ? :;switch 在值匹配场景更清晰,但别用它处理浮点数
最常见错误是把赋值 = 写成相等判断 == 或 ===,尤其在条件里漏掉括号或分号时容易连带出错。实际写法必须严格区分类型和值:
if (x === 5) 比 if (x == 5) 更安全,避免隐式转换(比如 "5" == 5 是 true,但 "5" === 5 是 false)&&(且)或 ||(或),注意短路行为:foo() && bar() 中如果 foo() 返回 false,bar() 根本不会执行? : 适合什么场景只推荐用于「单个表达式赋值」或「简单分支返回」,比如设置默认值、切换类名、渲染文案。它不是 if 的压缩写法,不能塞语句块:
const status = isActive ? "online" : "offline";
isActive ? console.log("on") : alert("off"); —— 这种应该用 ifa ? b ? c : d : e 很难维护,改用 if 或 switch当判断目标是「同一变量的多个离散值」时,switch 可读性更好,V8 引擎也常做优化;但它只做严格相等 === 判断,不支持范围或条件表达式:
switch (user.role) { case "admin": ... case "editor": ... }
switch (age) { case >= 18: ... } —— 语法错误,得用 ifbreak,否则会“穿透”到下一个 case;漏掉 default 容易掩盖未覆盖的分支很多人以为条件语句只是语法问题,其实关键在「值的真假性判断」和「作用域污染」:
false、0、-0、0n、""、null、undefined、NaN 是 falsy 值,其余都是 truthy —— 所以 if ([]) 和 if ({}) 都为 true??(空值合并)代替 || 处理默认值,避免 0 或 "" 被误判为 false:const count = input ?? 10;
let/const 有块级作用域,但 var 会提升到函数作用域,可能引发意外覆盖真正难的不是语法怎么写,而是想清楚「这个条件到底要捕获哪些真实状态」——比如用户输入为空字符串、null、undefined、还是仅空格,每种都该走不同分支,而不是全塞进一个 !value 里糊弄过去。
来电咨询