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语句提供两个分支。
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语句提供多个分支。
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语句用于多分支选择。
let day = 3;
switch (day) {
case 1:
console.log("星期一");
break;
case 2:
console.log("星期二");
break;
case 3:
console.log("星期三");
break;
default:
console.log("其他");
}
let day = 2;
// 没有break会继续执行
switch (day) {
case 1:
console.log("星期一");
case 2:
console.log("星期二");
case 3:
console.log("星期三");
}
// 输出:星期二 星期三(穿透执行)
let color = "yellow";
switch (color) {
case "red":
console.log("红色");
break;
case "green":
console.log("绿色");
break;
default:
console.log("其他颜色");
}
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;
}
// 使用表达式
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 | 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;
}
// 不推荐
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, "服务器错误"]
]);
掌握了条件语句后,让我们继续学习:
东巴文(db-w.cn) - 让编程学习更简单
🔀 东巴文寄语:条件语句是程序逻辑的基础,掌握if和switch的使用场景,写出清晰、可维护的条件判断代码。在 db-w.cn,我们帮你建立良好的编程习惯!