Skip to content

ES6 - 条件判断

编程中的条件判断(Decision-making)结构允许程序根据指定的条件执行不同的代码块。这些结构在决定执行哪个指令块之前,会评估一个条件(一个结果为 true 或 false 的表达式)。

想象一个流程图,其中提出了一个问题(条件)。如果答案是“是”(true),则执行一组操作路径。如果答案是“否”(false),则执行另一组不同的路径(或者不执行任何路径)。这就是条件逻辑的本质。

JavaScript 中主要的条件结构有:

序号语句描述
1if 语句一个 if 语句包含一个 Boolean 表达式,后跟一个或多个语句。只有当 Boolean 表达式评估为 true 时,这些语句才会被执行。
2if...else 语句一个 if 语句后面可以跟着一个可选的 else 语句。当 if 语句中的 Boolean 表达式评估为 false 时,else 代码块会被执行。
3else if 阶梯 / 嵌套 if 语句else if 阶梯(或一系列 if...else if...else 语句)对于顺序测试多个条件非常有用。它执行与第一个评估为 true 的条件关联的代码块。一个可选的最终 else 块可以处理所有前面的条件都不满足的情况。嵌套 if 语句则是在另一个 if 或 else 块中放置一个 if 或 if...else 语句,用于实现更复杂的逻辑分支。
4switch...case 语句switch 语句评估一个表达式,将表达式的值与一系列 case 子句进行匹配,并执行与第一个匹配的 case 关联的语句。通常使用 break 语句在匹配后退出 switch。一个可选的 default 子句可以在没有任何 case 匹配时执行。

现代 JavaScript 实践,例如使用 let 和 const 声明变量以及遵循严格相等检查(=== 和 !==),在编写条件逻辑时应该被采纳,以确保代码清晰并防止常见错误。

const score = 75;
let grade;
if (score >= 90) {
grade = 'A';
} else if (score >= 80) {
grade = 'B';
} else if (score >= 70) {
grade = 'C';
} else if (score >= 60) {
grade = 'D';
} else {
grade = 'F';
}
console.log(`With a score of ${score}, the grade is ${grade}.`); // Output: With a score of 75, the grade is C.
const dayOfWeek = new Date().getDay(); // Sunday - 0, Monday - 1, ..., Saturday - 6
let dayName;
switch (dayOfWeek) {
case 0:
dayName = 'Sunday';
break;
case 1:
dayName = 'Monday';
break;
case 2:
dayName = 'Tuesday';
break;
case 3:
dayName = 'Wednesday';
break;
case 4:
dayName = 'Thursday';
break;
case 5:
dayName = 'Friday';
break;
case 6:
dayName = 'Saturday';
break;
default:
dayName = 'Unknown Day';
}
console.log(`Today is ${dayName}.`);

理解 truthy 和 falsy 值在 JavaScript 条件逻辑中也至关重要,因为条件不一定必须严格是 Boolean 值。像 0、"" (空字符串)、null、undefined、NaN 和 false 本身都是 falsy 值,而大多数其他值都是 truthy 值。