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 语句正是实现这一功能的核心工具。无论是开发网页表单验证、游戏逻辑,还是构建复杂的业务系统,掌握 if/else 的灵活运用都是开发者必须具备的基础能力。本文将从语法基础到实战技巧,通过案例与比喻,帮助读者系统理解这一关键语句。


基础语法与核心逻辑

1. 基本结构与执行流程

if/else 语句的最简单形式如下:

if (条件表达式) {
    // 当条件成立时执行的代码块
}
  • 条件表达式:任何返回布尔值(truefalse)的表达式。例如:

    if (5 > 3) {  
        console.log("5 比 3 大");  
    }
    
  • 代码块:用大括号 {} 括起的代码段,当条件成立时才会执行。

比喻:可以想象 if 语句如同餐厅点餐系统——只有当顾客选择 "需要米饭"(条件成立)时,后厨才会开始煮饭(执行代码块)。


2. 带 else 的分支结构

当需要处理两种互斥情况时,可使用 else

if (条件表达式) {
    // 条件成立时执行
} else {
    // 条件不成立时执行
}

案例:用户登录验证:

const password = "123456";
if (password === "123456") {
    console.log("登录成功!");
} else {
    console.log("密码错误,请重试!");
}

3. 多条件分支:else if 的灵活运用

当存在多个判断条件时,可通过 else if 链式结构实现:

if (条件1) {
    // 条件1成立时执行
} else if (条件2) {
    // 条件2成立时执行
} else {
    // 所有条件都不成立时执行
}

案例:计算器的运算符判断:

const operator = "+";
let result;
if (operator === "+") {
    result = 5 + 3;
} else if (operator === "-") {
    result = 5 - 3;
} else {
    result = "不支持该运算符";
}
console.log(result); // 输出 8

进阶用法与优化技巧

1. 嵌套判断:多层条件的组合

通过将 if 语句嵌套在另一个 if 代码块中,可以实现复杂逻辑:

if (条件A) {
    if (条件B) {
        // A和B同时成立时执行
    }
} else {
    // A不成立时执行
}

案例:学生考试成绩分级:

const score = 85;
if (score >= 60) {
    if (score >= 90) {
        console.log("优秀");
    } else if (score >= 80) {
        console.log("良好");
    } else {
        console.log("及格");
    }
} else {
    console.log("不及格");
}

2. 条件表达式优化技巧

a. 逻辑运算符的巧妙使用

  • &&(与):只有当两侧条件都为 true 时,整体结果为 true
  • ||(或):只要有一个条件为 true,整体结果为 true
  • !(非):反转布尔值。

案例:同时验证用户名和密码:

const username = "admin";
const password = "123456";
if (username === "admin" && password === "123456") {
    console.log("管理员登录成功");
}

b. 短路运算符的简洁写法

利用 &&|| 的短路特性,可以简化代码:

// 等价于 if (value) { doSomething() }
value && doSomething();

// 等价于 if (!value) { doSomething() }
!value && doSomething();

3. switch 语句的替代方案

当需要判断同一变量的多个可能值时,switch 语句可能更简洁:

switch (expression) {
    case 值1:
        // 处理代码
        break;
    case 值2:
        // 处理代码
        break;
    default:
        // 其他情况
}

if/else 的对比
| 场景 | 推荐使用 | 原因 | |---------------------|-------------------------|-------------------------------| | 单一变量多值判断 | switch | 代码更易读,减少重复条件 | | 复杂逻辑判断 | if/else | 支持逻辑运算符和嵌套结构 |


4. 三元运算符的轻量级替代

三元运算符 condition ? expr1 : expr2if/else 的简写形式,适合单行表达式:

// 等价于 if/else 写法
const result = condition ? "成立时的值" : "不成立时的值";

案例:根据年龄显示不同提示:

const age = 18;
const message = age >= 18 ? "可以投票" : "未满18岁";
console.log(message); // 输出 "可以投票"

实战案例解析

案例1:天气预警系统

根据温度和湿度动态显示提示信息:

const temperature = 35;
const humidity = 85;

if (temperature >= 30) {
    if (humidity >= 80) {
        console.log("高温高湿,注意防暑降温!");
    } else {
        console.log("高温干燥,多补充水分!");
    }
} else {
    console.log("天气舒适,适合户外活动!");
}

案例2:电商优惠活动逻辑

const total = 500;
const hasCoupon = true;

if (total >= 300) {
    const discount = hasCoupon ? 100 : 50;
    console.log(`订单金额 ${total} 元,优惠后价格:${total - discount} 元`);
} else {
    console.log("未达到优惠门槛,原价支付");
}

常见错误与调试技巧

1. 条件表达式逻辑错误

  • 错误示例
    if (age = 18) { // 注意:这里使用了赋值运算符 =
        console.log("成年");
    }
    

    修正:应使用比较运算符 =====

    if (age === 18) { ... }
    

2. 代码块未正确缩进

  • 错误表现
    if (true)
    console.log("这行代码不会执行吗?");
    // 实际会执行,但逻辑可能不符合预期
    

    最佳实践:始终使用大括号包裹代码块,避免 "悬垂 else" 问题。

3. 条件顺序不当

当多个条件存在包含关系时,应将更具体的条件放在前面:

// 错误写法:会跳过第二个条件
if (age > 18) { ... }
else if (age > 60) { ... }

// 正确写法:先判断年龄 >60
if (age > 60) { ... }
else if (age > 18) { ... }

总结

通过本文的系统讲解,读者应能掌握以下核心要点:

  1. if/else 语句的语法结构与执行流程
  2. 多条件分支、嵌套判断与逻辑运算符的使用技巧
  3. 通过 switch 和三元运算符优化代码的场景
  4. 常见错误的排查与调试方法

进阶建议

  • 尝试用 if/else 实现一个简易的 "猜数字" 游戏
  • 探索 Object.keys() + reduce() 等高级技巧实现动态条件判断
  • 阅读开源项目中的条件逻辑,学习工程化代码的写法

掌握条件判断是迈向高级编程的关键一步。通过持续实践与案例分析,开发者能更灵活地控制代码的执行逻辑,为构建复杂功能打下坚实基础。

最新发布