正在加载...

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。

用 Boolean() 看 falsy

javascript
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。最先踩坑的往往是看起来像「否」、但仍有字符的字符串。

入门 truthy 示例

javascript
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))。完整分支写法稍后讲;这里只要看懂是/否这道门。

if 使用 truthy 与 falsy

javascript
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。

看起来像 falsy 的字符串陷阱

javascript
console.log(Boolean("0"));
console.log(Boolean(0));
console.log(Boolean("false"));
console.log(Boolean(false));
console.log("0" === 0);

空字符串与一个空格

普通字符串里只有长度为 0 的 "" 是 falsy。一个空格仍算内容。

空字符串与一个空格

javascript
console.log(Boolean(""));
console.log(Boolean(" "));
console.log("".length);
console.log(" ".length);

用一个值控制页面文案

用一个值决定访客看到什么。改它并刷新页面。

用 truthy / falsy 做页面门控

html
<!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 规则——这次在页面上。

自己动手

  1. 对 falsy 清单每一项打印 Boolean。
  2. 并排打印 Boolean("0") 与 Boolean(0)。
  3. 打印 Boolean(" ") 与 Boolean("")——空格 vs 空串。
  4. 写一个小的 if (score):先 score = 0,再 score = 5。
  5. 在 HTML 演示里把 user 设为 "",刷新并读新文案。
  6. 把 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
  • 下一课:运算符——用于计算与比较的符号

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
8
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部