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-控制流