JavaScript中falsy值只有6个:false、0(含+0和-0)、""、null、undefined、NaN;其余所有值均为truthy,Boolean()或!!可显式验证,==易引发类型转换混淆,应优先使用!value或??等安全操作。

JavaScript 中 falsy 值只有六个,记牢它们是判断变量真假性的底层依据。不是“看起来像假”,而是语言规范明确定义的、在布尔上下文中一定转为 false 的值。
这六个 falsy 值是:
• false(布尔类型的 false 本身)
• 0(数字零,包括 +0 和 -0)
• ""(空字符串,注意:" "、"0"、"false" 都不是空字符串,全是 truthy)
• null(空对象引用)
• undefined(未声明或未赋值的变量值)
• NaN(非数字,如 0/0 或 parseInt("abc"))
怎么在布尔转换中牢牢记住?
用 Boolean() 或双感叹号 !! 显式转换,是最直接的验证方式:
-
Boolean(0) === false,!!null === false—— 每次不确定就敲一行,强化肌肉记忆 - 把六个值写成数组批量测试:
[false, 0, "", null, undefined, NaN].map(Boolean)→ 全是false - 反向验证:除了这六个,其他都为 true —— 比如
{}、[]、function(){}、new Date('')、0n、Infinity,哪怕内容为空或无效,也都是 truthy
为什么别用 == 来判断真假?
因为 == 会触发额外类型转换,造成混淆:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
0 == false是true,但"" == false也是true,而null == undefined居然也true—— 这些都不是 falsy 规则,是 == 的松散相等陷阱 - 真正想表达“是否为假值”,就该用
!value或Boolean(value) === false,逻辑清晰不绕弯
实战中怎么安全使用?
避免只靠 if (obj.prop) 访问嵌套属性,改用可选链和空值合并:
立即学习“Java免费学习笔记(深入)”;
-
obj?.user?.name ?? "匿名"—— 不会因obj为null报错,且??只在值为null或undefined时生效,不像||会把0、""也当假 - 需要区分“空字符串”和“未提供”,就别用
value || "default",改用value !== undefined && value !== null ? value : "default"或value ?? "default"

















