条件语句

一个总是做同样事情的程序用处不大。你想要一个页面向已登录的访客显示一条消息,向陌生人显示另一条消息,一个表单接受 18 岁但拒绝 12 岁,一个游戏报告你是赢了还是输了。所有这些都需要一种方式来提出问题并根据答案采取行动。这就是条件语句所做的:它们让你的代码根据某些内容是否为真来选择运行什么。
你已经有了这些部分。比较和逻辑运算符产生真假答案,本章讲的是如何根据这些答案采取行动。
仅在条件为真时运行代码
一个 if 语句 仅在条件为真时运行一个代码块。你写 if 这个单词,在括号中写条件,在花括号中写一个代码块。如果条件为真,代码块就会运行。如果不是,JavaScript 会跳过这个块并继续执行。
const age = 20;
if (age >= 18) {
console.log("You can enter."); // You can enter.
}条件 age >= 18 要么为真,要么为假。这里 age 是 20,所以它为真,消息就会打印。如果把 age 改为 12,条件就为假,代码块被跳过,什么都不会打印。
通常当条件为假时,你想要一个备选方案。这就是 else 的作用:
const age = 12;
if (age >= 18) {
console.log("You can enter.");
} else {
console.log("Come back when you are older."); // Come back when you are older.
}恰好有一个代码块会运行,永远不会两个都运行。当你有两个以上的结果时,else if 让你检查另一个条件:
const score = 74;
if (score >= 90) {
console.log("Grade: A");
} else if (score >= 70) {
console.log("Grade: B"); // Grade: B
} else {
console.log("Grade: C");
}JavaScript 从上到下检查每个条件,并在找到第一个为真的条件时停止。74 的分数不 >= 90,但它是 >= 70,所以它打印 Grade: B 并从不查看 else。
if 仅在括号中的条件为真时运行其代码块,else 为它不为真的情况提供备选。当有两个以上的结果时,添加 else if。JavaScript 从上到下检查,并在第一个匹配时停止,所以把你的条件按有意义的顺序排列。 用三元运算符选择一个值
有时 if / else 做一件小事:在两个值之间选择。为此有一个更短的形式叫做 三元运算符。你写一个条件,一个 ?,条件为真时使用的值,一个 :,以及条件为假时使用的值。
const age = 20;
const message = age >= 18 ? "Welcome" : "Too young";
console.log(message); // Welcome把它读作一个问题:age >= 18 吗?如果是,message 变成 "Welcome";如果不是,它变成 "Too young"。这与 if / else 会做出的决定相同,但只用一行。
三元运算符在你选择一个值来存储或打印时效果最好。当一个分支需要做几件事时,if 语句更清晰,所以只在每一侧都是一个单一的值时才使用三元运算符。
condition ? valueIfTrue : valueIfFalse。当你选择要存储或打印的东西时它闪闪发光。如果一个分支需要做的不仅仅是交回一个单一的值,使用完整的 if 代替,它会更清晰。 用 switch 对比单个值和固定情况
当你检查一个值是否与一个固定的可能性列表相符时,一个 switch 语句 可能比一个长的 if / else if 链更整洁。你给它要检查的值,然后列出要与之比较的情况。
const day = "Tue";
switch (day) {
case "Sat":
console.log("Weekend");
break;
case "Sun":
console.log("Weekend");
break;
default:
console.log("Weekday"); // Weekday
}switch 依次将 day 与每个 case 比较。当它找到匹配时,它运行那个情况的代码。break 告诉它停止;没有它,JavaScript 会继续进入下一个情况。default 是备选,当没有情况匹配时运行,就像链中的最后一个 else。
忘记 break 是经典的 switch 错误。漏掉它,你的代码运行匹配的情况,然后运行其下的每个情况,直到它碰到 break 或结束,这几乎从不是你的本意。
switch 检查一个值是否与一个 case 选项列表相符并运行匹配的,用 default 作为兜底。总是用 break 结束每个情况,否则 JavaScript 继续进入下面的情况。那个缺失的 break 是几乎每个人都至少犯过一次的错误。 选择正确的工具
你现在有三种方式来做出决策,选择主要是关于合适性。当条件是范围或组合时,使用 if / else if / else 链用于大多数分支,特别是当条件是范围或组合时。当你选择两个值中的一个来存储或打印时使用三元运算符。当你检查一个值是否与一些固定的选项相符时使用 switch。
这些都不比其他的更高级。选择最清楚地表述你的决策的那一个,如果你不确定,if 语句总是一个安全的默认值。
if 链用于大多数决策,当你选择两个值之一时用三元运算符,当你将一个值与固定选项匹配时用 switch。没有哪个比其他的花哨。选择最清楚地表述你的决策的那一个,不确定时默认为 if。 条件语句从这里走向何方
条件语句是程序停止是固定脚本并开始响应其输入的方式。你会经常使用它们,它们与周围的一切结合:真假答案来自 operators,你在这里做出的决策一旦你可以用 loops 在数据上反复运行它们,并将它们打包在 functions 中时开始付出代价。
下一章,loops,添加了控制流的另一半:不仅选择是否运行代码,而是一次又一次地运行它,直到一个条件告诉你停止。

