条件语句

if语句

if语句是最基本的条件判断语句。

基本语法

let age = 20;

if (age >= 18) {
    console.log("已成年");
}

执行流程

条件表达式 → true → 执行代码块
           → false → 跳过

条件表达式

// 任意表达式都可以作为条件
// 表达式会被转换为布尔值

// 常见的真值条件
if (1) { }           // true
if ("东巴文") { }    // true
if ([]) { }          // true
if ({}) { }          // true

// 常见的假值条件
if (0) { }           // false
if ("") { }          // false
if (null) { }        // false
if (undefined) { }   // false
if (NaN) { }         // false

if-else语句

if-else语句提供两个分支。

基本语法

let age = 15;

if (age >= 18) {
    console.log("已成年");
} else {
    console.log("未成年");
}

执行流程

条件表达式 → true → 执行if代码块
           → false → 执行else代码块

应用场景

// 判断奇偶
function isEven(n) {
    if (n % 2 === 0) {
        return true;
    } else {
        return false;
    }
}

// 简化写法
function isEven(n) {
    return n % 2 === 0;
}

// 判断正负零
function checkNumber(n) {
    if (n > 0) {
        return "正数";
    } else if (n < 0) {
        return "负数";
    } else {
        return "零";
    }
}

if-else if-else语句

if-else if-else语句提供多个分支。

基本语法

let score = 85;

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

执行流程

条件1 → true → 执行代码块1 → 结束
      → false → 检查条件2
                条件2 → true → 执行代码块2 → 结束
                       → false → 检查条件3
                                 ...
                                       → 都不满足 → 执行else代码块

注意事项

// 条件顺序很重要
let score = 85;

// 错误写法:条件顺序不对
if (score >= 60) {
    console.log("及格");  // 85会输出"及格"
} else if (score >= 70) {
    console.log("中等");
}

// 正确写法:从大到小判断
if (score >= 90) {
    console.log("优秀");
} else if (score >= 80) {
    console.log("良好");  // 85输出"良好"
}

switch语句

switch语句用于多分支选择。

基本语法

let day = 3;

switch (day) {
    case 1:
        console.log("星期一");
        break;
    case 2:
        console.log("星期二");
        break;
    case 3:
        console.log("星期三");
        break;
    default:
        console.log("其他");
}

break的作用

let day = 2;

// 没有break会继续执行
switch (day) {
    case 1:
        console.log("星期一");
    case 2:
        console.log("星期二");
    case 3:
        console.log("星期三");
}
// 输出:星期二 星期三(穿透执行)

default分支

let color = "yellow";

switch (color) {
    case "red":
        console.log("红色");
        break;
    case "green":
        console.log("绿色");
        break;
    default:
        console.log("其他颜色");
}

分组case

let month = 2;

switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        console.log("31天");
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        console.log("30天");
        break;
    case 2:
        console.log("28或29天");
        break;
}

switch表达式

// 使用表达式
let a = 10, b = 5;
let op = "+";

switch (op) {
    case "+":
        console.log(a + b);
        break;
    case "-":
        console.log(a - b);
        break;
    case "*":
        console.log(a * b);
        break;
    case "/":
        console.log(a / b);
        break;
}

switch vs if-else

特性 switch if-else 东巴文建议
判断方式 精确匹配 条件表达式 固定值用switch
性能 多分支时更优 条件复杂时灵活 分支多用switch
可读性 多分支更清晰 条件复杂时更直观 按场景选择
灵活性 只能精确匹配 任意条件 复杂条件用if

条件语句最佳实践

使用严格相等

// 推荐
if (value === 5) { }
if (value === null) { }
if (value === undefined) { }

// 不推荐
if (value == 5) { }
if (value == null) { }

避免嵌套过深

// 不推荐:嵌套过深
function checkUser(user) {
    if (user) {
        if (user.age >= 18) {
            if (user.hasID) {
                return "可以进入";
            } else {
                return "没有身份证";
            }
        } else {
            return "未成年";
        }
    } else {
        return "用户不存在";
    }
}

// 推荐:提前返回
function checkUser(user) {
    if (!user) return "用户不存在";
    if (user.age < 18) return "未成年";
    if (!user.hasID) return "没有身份证";
    return "可以进入";
}

使用有意义的条件

// 不推荐
if (user.age >= 18 && user.hasID && user.hasTicket) {
    // ...
}

// 推荐
const isAdult = user.age >= 18;
const hasValidID = user.hasID;
const hasTicket = user.hasTicket;

if (isAdult && hasValidID && hasTicket) {
    // ...
}

三元运算符简化

// 简单条件
let status = age >= 18 ? "成年" : "未成年";

// 不要过度使用
// 不推荐
let result = a > b ? (a > c ? a : c) : (b > c ? b : c);

// 推荐
function max(a, b, c) {
    if (a >= b && a >= c) return a;
    if (b >= c) return b;
    return c;
}

使用switch替代多个if

// 不推荐
if (type === "a") {
    // ...
} else if (type === "b") {
    // ...
} else if (type === "c") {
    // ...
}

// 推荐
switch (type) {
    case "a":
        // ...
        break;
    case "b":
        // ...
        break;
    case "c":
        // ...
        break;
}

使用对象映射

// 使用对象替代switch
function getGrade(score) {
    const grades = {
        A: "优秀",
        B: "良好",
        C: "中等",
        D: "及格",
        F: "不及格"
    };
    
    if (score >= 90) return grades.A;
    if (score >= 80) return grades.B;
    if (score >= 70) return grades.C;
    if (score >= 60) return grades.D;
    return grades.F;
}

// 或者使用Map
const statusMap = new Map([
    [200, "成功"],
    [404, "未找到"],
    [500, "服务器错误"]
]);

下一步

掌握了条件语句后,让我们继续学习:

  1. 循环语句 - 学习循环语句
  2. 异常处理 - 学习异常处理
  3. 函数基础 - 学习函数

东巴文(db-w.cn) - 让编程学习更简单

🔀 东巴文寄语:条件语句是程序逻辑的基础,掌握if和switch的使用场景,写出清晰、可维护的条件判断代码。在 db-w.cn,我们帮你建立良好的编程习惯!