if 与 else
逻辑运算符给了你是/否的答案。下一个问题是:该运行哪些行? 答案为是就跑一块,为否就跑另一块。这个选择就是 if / else / else if。你已经会造 boolean;这里用它来挑路径。
if 做什么?
if 看括号里的条件。值是 truthy 时,JavaScript 立刻执行后面花括号里的块;是 falsy 就跳过该块。else 是 if 失败时的备用路径。else if 在最终 else 之前再加一道检查。
关键字一览
📊 日常 if / else 零件
| 关键字 | 日常读法 | 典型用途 |
|---|---|---|
if |
若通过,就跑这块 | 第一道检查 |
else if |
否则,若另一道检查通过… | 中间路径 |
else |
否则跑这个 | 最后兜底 |
条件要清楚:比较(age >= 18)、逻辑连接(age >= 18 && score >= 60),或明确的 boolean 变量。该路径要做的事写在 { … } 里。
let age = 20;
if (age >= 18) {
console.log("adult");
}
console.log("done");
只有检查通过时 if 才跑
这里 age 是 20,所以 age >= 18 为 true,控制台先打印 adult,再打印 done。把 age 改成 16 就只剩 done——if 块被跳过了。
闭合 } 后面的那一行通常总会执行(除非你稍后离开函数)。if 不会停掉整个程序;它只决定自己的块要不要跑。
let age = 16;
if (age >= 18) {
console.log("adult");
} else {
console.log("under 18");
}
else 覆盖另一条路
这次检查失败,JavaScript 跳过第一块并执行 else。你会看到 under 18。在简单的 if / else 对里,恰好跑一条分支——不会两条都跑,也不会一条都不跑。
let score = 75;
if (score >= 90) {
console.log("A");
} else if (score >= 60) {
console.log("pass");
} else {
console.log("retry");
}
else if 增加中间路径
score 是 75。第一道检查(>= 90)失败。第二道(>= 60)通过,所以看到 pass,最后的 else 被跳过。顺序很重要:区间重叠时,把更严的条件放前面。
若写成三个独立的 if,可能跑多个块。else if 让路径互斥——第一次匹配后链条就停。
let age = 20;
let score = 75;
if (age >= 18 && score >= 60) {
console.log("allowed");
} else {
console.log("blocked");
}
let ready = false;
if (!ready) {
console.log("wait");
}
括号里放真实检查
条件可以是比较、逻辑表达式,或取反后的 boolean。age >= 18 && score >= 60 为 true,所以看到 allowed。!ready 也是 true,还会看到 wait。先造出是/否,再让 if 选分支。
let age = 20;
let label;
if (age >= 18) {
label = "adult";
} else {
label = "under 18";
}
console.log(label);
给分支结果起名
有时你要从选择里得到字符串(或数字),而不只是 console.log。在每个分支里给 label 赋值,之后用一次。这里 label 变成 "adult"。
在页面上显示所选路径
用 if / else 算出短消息,再写到页面上。
<!DOCTYPE html>
<html>
<head>
<title>If else — page branch</title>
</head>
<body>
<p id="out">…</p>
<script>
let age = 20;
let msg;
if (age >= 18) {
msg = "adult";
} else {
msg = "under 18";
}
let box = document.getElementById("out");
box.textContent = "status=" + msg;
</script>
</body>
</html>
age 是 20,页面显示 status=adult。把 age 设为 16 并刷新,应看到 status=under 18。下一课(switch)是在多个固定值里选择;日常是/否门槛仍用 if / else。
自己试试
- 在
if (true)里打印"ok",确认有输出。 - 用
let age = 16写if/else,打印"adult"或"under 18"。 - 为
score分段建else if链:A(≥ 90)、pass(≥ 60),否则retry。 - 在一个
if条件里组合age >= 18 && score >= 60。 - 用
if/else存一个label字符串,再打印一次。 - 在 HTML 演示里只改
age,刷新并读新的status=文本。
常见错误
- 忘记给分支体加花括号
{ } - 写成
if (age = 18)用单个=(赋值)而不是比较 - 上面没有匹配的
if就写else - 本意是互斥
else if路径,却写了多个独立if - 分段检查顺序错误(例如把
>= 60放在>= 90前面)
小结
- 条件为 truthy 时,
if执行一块代码 - 该
if失败时执行else else if增加更多互斥的中间路径- 条件通常是比较或逻辑表达式
- 每个分支放进花括号;需要稍后用结果就存标签
- 下一课:switch——在多个固定值中选择
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部