JavaScript If…Else 语句(手把手讲解)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

在编程的世界中,逻辑控制是构建智能程序的核心能力之一。JavaScript If…Else 语句作为条件判断的核心语法,如同程序的“大脑”,决定着代码在不同场景下的执行路径。无论是开发一个简单的计算器,还是复杂的动态网页应用,掌握这一基础语法都是开发者进阶的关键一步。本文将通过循序渐进的讲解、生动的比喻和实际案例,帮助读者全面理解这一主题,同时为中级开发者提供优化技巧和常见问题解决方案。


一、基础语法:条件判断的“交通灯”

1.1 基本结构与作用

If…Else 语句的作用类似于现实中的“交通灯”:根据当前条件(如红灯、绿灯)决定下一步行动。在 JavaScript 中,它的基本结构如下:

if (条件表达式) {  
  // 当条件为 true 时执行的代码块  
} else {  
  // 当条件为 false 时执行的代码块(可选)  
}  

关键点

  • 条件表达式必须返回一个布尔值(true 或 false)。
  • 大括号 {} 定义代码块,可以包含多行代码。
  • else 是可选的,若省略,则条件不满足时直接跳过整个语句。

1.2 简单案例:判断年龄是否成年

let age = 20;  
if (age >= 18) {  
  console.log("成年,可以投票");  
} else {  
  console.log("未成年,无法投票");  
}  

输出成年,可以投票

1.3 省略 else 的场景

let temperature = 30;  
if (temperature > 25) {  
  console.log("今天天气炎热,记得带伞");  
}  
// 当温度 <=25 时,程序直接跳过整个 if 语句  

二、进阶用法:多分支判断与嵌套

2.1 else if 的链式判断

当需要处理多个条件时,可以使用 else if 构建多分支逻辑。这类似于超市的“自动分拣机”,根据商品类型(零食、饮料、生鲜)分配到不同区域。

let score = 85;  
if (score >= 90) {  
  console.log("A 等级");  
} else if (score >= 80) {  
  console.log("B 等级");  
} else if (score >= 70) {  
  console.log("C 等级");  
} else {  
  console.log("D 等级");  
}  

输出B 等级

2.2 嵌套的 if…Else:多条件组合的“俄罗斯套娃”

当条件之间存在层级关系时,可以将 if…Else 语句嵌套使用。例如,判断用户是否满足“年龄≥18岁且持有身份证”的双重条件:

let age = 22;  
let hasID = true;  
if (age >= 18) {  
  if (hasID) {  
    console.log("可以办理业务");  
  } else {  
    console.log("请先办理身份证");  
  }  
} else {  
  console.log("未满18岁,无法办理");  
}  

输出可以办理业务

注意:嵌套层级过深会导致代码可读性下降,建议通过逻辑重组或提前返回(Early Return)优化。


三、最佳实践:让代码更优雅

3.1 优先使用逻辑运算符简化条件

通过 &&(与)、||(或)、!(非)等运算符,可以将复杂条件合并为一行。例如:

// 原始写法  
if (age >= 18 && hasID) {  
  console.log("通过");  
}  

// 等价于  
if (age >= 18) {  
  if (hasID) {  
    console.log("通过");  
  }  
}  

3.2 条件表达式优先使用严格相等(===

避免因类型转换导致的意外结果:

let userInput = "18";  
if (userInput === 18) {  
  console.log("严格相等时执行"); // 不会触发,因为字符串与数字类型不同  
}  

3.3 提前返回(Early Return)优化嵌套

通过尽早返回结果,减少代码缩进层级,例如:

function checkLogin(username, password) {  
  if (!username) {  
    return "用户名不能为空";  
  }  
  if (!password) {  
    return "密码不能为空";  
  }  
  // 后续逻辑  
  return "登录成功";  
}  

四、常见错误与解决方案

4.1 忘记条件表达式返回布尔值

// 错误示例  
if (age = 18) { // 应为 `==` 或 `===`  
  console.log("赋值操作导致条件始终为 true");  
}  

4.2 括号不匹配或逻辑混乱

// 错误示例  
if (age > 18  
  console.log("错误"); // 缺少右括号和大括号  
}  

4.3 条件优先级问题

当条件包含多个运算符时,需注意优先级或使用括号明确顺序:

// 不明确的写法  
if (age < 18 || hasPermission && role === "admin") {  
  // 可能因运算符优先级导致逻辑错误  
}  

// 优化后  
if (age < 18 || (hasPermission && role === "admin")) {  
  // 明确优先级  
}  

五、实际案例:表单验证与动态交互

5.1 用户注册表单验证

function validateForm(username, email, password) {  
  if (username.length < 5) {  
    return "用户名需至少 5 个字符";  
  }  
  if (!email.includes("@")) {  
    return "邮箱格式不正确";  
  }  
  if (password.length < 8) {  
    return "密码需至少 8 个字符";  
  }  
  return "验证通过,提交成功!";  
}  

console.log(validateForm("user123", "test@domain.com", "pass1234"));  
// 输出:验证通过,提交成功!  

5.2 根据用户输入动态显示内容

let input = prompt("请输入数字:");  
if (input % 2 === 0) {  
  console.log("您输入的是偶数");  
} else {  
  console.log("您输入的是奇数");  
}  

六、与 switch 语句的对比

If…Elseswitch 均用于条件判断,但适用场景不同:
| 场景 | If…Else 优点 | Switch 优点 |
|----------------------|--------------------------------------|--------------------------------------|
| 多个简单条件(如枚举)| 灵活,支持复杂逻辑表达式 | 代码更简洁,适合等值判断 |
| 范围判断(如 0-100) | 必须使用 if…Else | 需结合 case 范围或默认值处理 |

示例:使用 switch 判断星期几

let day = "Monday";  
switch (day) {  
  case "Monday":  
  case "Tuesday":  
    console.log("工作日");  
    break;  
  case "Saturday":  
  case "Sunday":  
    console.log("周末");  
    break;  
  default:  
    console.log("无效日期");  
}  

结论

JavaScript If…Else 语句是编程逻辑的核心工具,通过合理设计条件分支,开发者可以构建出灵活、智能的程序。本文从基础语法到高级技巧,结合实际案例,帮助读者理解其工作原理和最佳实践。对于初学者,建议通过编写简单条件判断程序巩固基础;中级开发者则可尝试优化复杂逻辑、避免嵌套陷阱,并结合其他控制结构(如 switch、循环)提升代码质量。

掌握条件判断逻辑后,可以进一步探索函数式编程、模块化设计等进阶主题,逐步成长为更专业的 JavaScript 开发者。记住:代码的优雅程度,往往体现在对条件分支的精简与清晰表达上。

最新发布