Day-3-条件判断

Day 3: 条件判断

🎯 学习目标

  • 理解条件判断的概念和作用
  • 掌握 if/else 语句的使用
  • 学会使用逻辑运算符
  • 掌握 switch 语句
  • 了解三元运算符

💡 核心概念

什么是条件判断?

条件判断让程序能够根据不同的情况执行不同的代码。就像现实生活中:

  • "如果下雨,带伞;否则,不带"
  • "如果分数>=60,及格;否则,不及格"

为什么需要条件判断?

// 没有条件判断
let price = 100;
let finalPrice = price - 20;  // 固定折扣,不合理

// 有条件判断
let price = 100;
let finalPrice;
if (price > 50) {
    finalPrice = price - 20;  // 满50减20
} else {
    finalPrice = price - 5;   // 否则减5
}

📝 if 语句

基本语法

if (条件) {
    // 条件为 true 时执行的代码
}

let score = 85;
if (score >= 60) {
    console.log("及格了!");
}

if…else 语句

if (条件) {
    // 条件为 true 时执行
} else {
    // 条件为 false 时执行
}

let score = 55;
if (score >= 60) {
    console.log("及格");
} else {
    console.log("不及格");
}

if…else if…else 语句

if (条件1) {
    // 条件1为 true 时执行
} else if (条件2) {
    // 条件2为 true 时执行
} else {
    // 所有条件都为 false 时执行
}

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

🔀 逻辑运算符

1. &&(与运算)

两个条件都为 true,结果才为 true。

let age = 25;
let hasLicense = true;

if (age >= 18 && hasLicense) {
    console.log("可以开车");
}

真值表

true  && true  = true
true  && false = false
false && true  = false
false && false = false

2. ||(或运算)

至少有一个条件为 true,结果就为 true。

let age = 65;
let isDisabled = false;

if (age >= 65 || isDisabled) {
    console.log("可以申请优惠");
}

真值表

true  || true  = true
true  || false = true
false || true  = true
false || false = false

3. !(非运算)

取反。

let isLoggedIn = false;

if (!isLoggedIn) {
    console.log("请先登录");
}

🎯 比较运算符

// 等于
5 == "5"    // true  (自动类型转换)
5 === "5"   // false (严格比较)

// 不等于
5 != "5"    // false
5 !== "5"   // true

// 大于
5 > 3       // true
5 >= 5      // true

// 小于
3 < 5       // true
5 <= 5      // true

重要:总是使用 ===!== 进行比较!

🔄 switch 语句

let day = "星期一";

switch (day) {
    case "星期一":
        console.log("工作日");
        break;
    case "星期二":
        console.log("工作日");
        break;
    case "星期六":
    case "星期日":
        console.log("周末");
        break;
    default:
        console.log("未知");
}

⚡ 三元运算符

// 语法
条件 ? 值1 : 值2

// 示例
let age = 20;
let status = age >= 18 ? "成年" : "未成年";

🎮 实战示例

示例1:登录验证

function login(username, password) {
    if (!username || !password) {
        return {success: false, message: "请输入用户名和密码"};
    }
    
    if (username.length < 3) {
        return {success: false, message: "用户名至少3个字符"};
    }
    
    if (password.length < 6) {
        return {success: false, message: "密码至少6个字符"};
    }
    
    return {success: true, message: "登录成功"};
}

示例2:成绩评级

function getGrade(score) {
    if (score >= 90) return "A";
    if (score >= 80) return "B";
    if (score >= 70) return "C";
    if (score >= 60) return "D";
    return "F";
}

示例3:价格计算器

function calculatePrice(price, quantity, memberLevel) {
    let total = price * quantity;
    let discount = 0;
    
    switch (memberLevel) {
        case "gold": discount = 0.2; break;
        case "silver": discount = 0.1; break;
        case "bronze": discount = 0.05; break;
    }
    
    // 满减优惠
    if (total >= 100) total -= 20;
    else if (total >= 50) total -= 10;
    
    return total * (1 - discount);
}

✍️ 练习任务

练习1:数字比较

function findMax(a, b, c) {
    let max = a;
    if (b > max) max = b;
    if (c > max) max = c;
    return max;
}

练习2:闰年判断

function isLeapYear(year) {
    if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
        return true;
    }
    return false;
}

练习3:游戏评级

function getGameRating(age) {
    if (age < 6) return "休闲";
    if (age < 12) return "儿童";
    if (age < 16) return "青少年";
    if (age < 18) return "成人";
    return "限制级";
}

🎓 今日挑战

项目:石头剪刀布游戏

function playRPS(playerChoice) {
    const choices = ["石头", "剪刀", "布"];
    const computerChoice = choices[Math.floor(Math.random() * 3)];
    
    if (playerChoice === computerChoice) {
        return `平局!都选择了${playerChoice}`;
    }
    
    if (
        (playerChoice === "石头" && computerChoice === "剪刀") ||
        (playerChoice === "剪刀" && computerChoice === "布") ||
        (playerChoice === "布" && computerChoice === "石头")
    ) {
        return `你赢了!${playerChoice}胜${computerChoice}`;
    }
    
    return `你输了!${computerChoice}胜${playerChoice}`;
}

💡 最佳实践

1. 简单条件用三元运算符

let max = a > b ? a : b;

2. 复杂条件用变量

let canDrive = age > 18 && hasLicense;
let isValid = !isSuspended && hasInsurance;
if (canDrive && isValid) { }

3. 提前返回

function process(user) {
    if (!user) return "无用户";
    if (!user.isActive) return "未激活";
    if (!user.hasPermission) return "无权限";
    return "处理成功";
}

学习时间: 2026-03-07 13:30
难度: ⭐⭐⭐☆☆
预计用时: 2-3 小时
关键词: 条件判断, if, switch, 逻辑运算符
相关标签: #03-控制流