truthy 与 falsy
你已经会用 String()、Number() 和 Boolean() 做转换。下一步是看这些值在做决定时如何表现——还不用等完整的 if / else 章节。表现得像「否」的叫 falsy;其余几乎都是 truthy。先把简短的 falsy 清单记牢,后面少走很多弯路。
JavaScript 里 truthy 与 falsy 是什么?
Falsy:在条件里,JavaScript 会把它当成 false。Truthy:当成 true。这不是新的数据类型——还是你熟悉的数字和字符串。可以用 Boolean(value) 预览,也可以写 if (value),规则相同。入门只要掌握 falsy 清单;其余通常是 truthy。
Falsy 清单
📊 初学者必须知道的 falsy 值
| 值 | 为何像「空 / 否」 | 说明 |
|---|---|---|
false |
布尔的否 | 关键字 |
0 |
数字零 | 也包括 -0 |
"" |
空字符串 | 长度为 0 |
null |
有意留空 | 上一课 |
undefined |
还没有值 | 上一课 |
NaN |
失败的数字 | typeof 仍是 "number" |
入门清单就这些。记 falsy,不要背无穷的 truthy 目录。不在清单里的,先当作 truthy,除非后面课程另说。
用 Boolean() 看 falsy
Boolean(...) 是清晰的预览。清单上每一项都会变成 false。
console.log(Boolean(false));
console.log(Boolean(0));
console.log(Boolean(""));
console.log(Boolean(null));
console.log(Boolean(undefined));
console.log(Boolean(NaN));
对初学者来说,默认多半是 truthy
非空字符串、多数数字,以及 true 本身都是 truthy。最先踩坑的往往是看起来像「否」、但仍有字符的字符串。
console.log(Boolean(1));
console.log(Boolean(-3));
console.log(Boolean("hi"));
console.log(Boolean("0"));
console.log(Boolean("false"));
console.log(Boolean(" "));
"0" 和 "false" 因是非空文本而 truthy。单个空格 " " 也是 truthy——普通字符串里只有 ""(长度为零)是 falsy。
不调用 Boolean() 的 if
简单的 if (value) 用的就是同一规则。不必写 if (Boolean(value))。完整分支写法稍后讲;这里只要看懂是/否这道门。
let name = "Ada";
if (name) {
console.log("name is truthy");
}
let empty = "";
if (empty) {
console.log("will not run");
} else {
console.log("empty string is falsy");
}
字符串陷阱:"0" 与 "false"
表单和 API 常常传来文本。字符串 "0" 不是数字 0。字符串 "false" 不是布尔 false。两者都是 truthy。
console.log(Boolean("0"));
console.log(Boolean(0));
console.log(Boolean("false"));
console.log(Boolean(false));
console.log("0" === 0);
空字符串与一个空格
普通字符串里只有长度为 0 的 "" 是 falsy。一个空格仍算内容。
console.log(Boolean(""));
console.log(Boolean(" "));
console.log("".length);
console.log(" ".length);
用一个值控制页面文案
用一个值决定访客看到什么。改它并刷新页面。
<!DOCTYPE html>
<html>
<head>
<title>Truthy falsy — page gate</title>
</head>
<body>
<p id="msg">…</p>
<script>
let user = "Sam";
let box = document.getElementById("msg");
if (user) {
box.textContent = "Hello, " + user;
} else {
box.textContent = "Please sign in";
}
</script>
</body>
</html>
把 user 设为 "" 或 null 再刷新,文案会变成登录提示。同一条 falsy 规则——这次在页面上。
自己动手
- 对 falsy 清单每一项打印
Boolean。 - 并排打印
Boolean("0")与Boolean(0)。 - 打印
Boolean(" ")与Boolean("")——空格 vs 空串。 - 写一个小的
if (score):先score = 0,再score = 5。 - 在 HTML 演示里把
user设为"",刷新并读新文案。 - 把
user改成"0",问候仍会执行(truthy 字符串)。
常见错误
- 把
"false"或"0"当成 falsy——它们是非空字符串 - 以为必须总是包一层
Boolean()——if (value)已会转换 - 去背所有 truthy,而不是短 falsy 清单
- 把数字
0(falsy)和字符串"0"(truthy)弄混 - 清单漏掉
null、undefined或NaN
小结
- Falsy:在条件里像
false——记住短清单 - Truthy:像
true——日常多数值 - 用
Boolean(value)预览,或直接if (value) - 字符串陷阱:
"0"与"false"是 truthy - 下一课:运算符——用于计算与比较的符号
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部