JavaScript条件语句怎么写_它们如何控制程序流程

12次阅读

javaScript条件语句核心是if(处理布尔判断、范围检查)和switch(仅精确匹配固定值),需警惕真值陷阱与switch穿透问题。

JavaScript条件语句怎么写_它们如何控制程序流程

javascript 条件语句不是“写法选择题”,而是根据运行时值决定执行哪段代码的机制。核心就两条:if 语句处理真假分支,switch 语句匹配离散值——用错场景或忽略隐式转换,程序就会走偏。

什么时候该用 if,什么时候该用 switch

if 适合做布尔判断、范围检查、复合条件;switch 只适合精确匹配已知的几个固定值(如状态码、枚举字符串)。拿用户权限判断举例:

  • if:检查 user.age >= 18 && user.isVerified —— 涉及计算和逻辑组合
  • switch:根据 response.status 做不同处理,比如 case 200case 404case 500
  • 别用 switch 判断 score >= 90 —— 它不支持表达式,只能匹配字面量或变量引用

if 里容易被忽略的真值陷阱

JavaScript 的条件判断基于“真值(truthy)/假值(falsy)”,不是布尔值。空数组 []对象 {}、字符串 "false" 都是真值;而 0""NULLundefinedNaN 是假值。常见误判:

  • 检查输入是否为空字符串?别写 if (input) —— 输入 "0"" " 也会通过
  • 想确认变量有定义且非空?用 if (input != null && input !== "") 或更安全的 if (typeof input === "string" && input.trim().length > 0)
  • 后端交互拿到 data.items,直接 if (data.items) 可能出错 —— 如果 API 返回 {items: null},它会跳过;但如果是 {items: []},它会进入分支,结果却遍历空数组

switch 必须加 break,但 default 不强制

switch 是“从上到下找第一个匹配项并执行”,没有 break 就会“穿透”到下一个 case。这是设计特性,不是 bug,但多数时候你要避免它。

立即学习Java免费学习笔记(深入)”;

let fruit = "apple"; switch (fruit) {   case "apple":     console.log("red");   case "banana": // 没有 break!这里也会执行     console.log("yellow");     break;   case "grape":     console.log("purple"); } // 输出:rednyellow
  • 每个 case 块末尾显式写 break,除非你明确需要穿透
  • default 不是必须的,但如果漏掉且没匹配任何 case,就什么也不做 —— 这可能掩盖逻辑缺陷
  • 注意:switch 使用严格相等(===)比较,所以 case 1: 不会匹配字符串 "1"

最常出问题的地方不在语法,而在把条件判断当成“流程开关”来用,却忘了数据本身可能不符合预期。多一层校验,比多一个 else 更可靠。

text=ZqhQzanResources