JavaScript中只有6个假值:false、0、-0、0n、""、null、undefined;NaN和document.all也属falsy但需注意特殊性;善用truthy/falsy可简化条件判断,避免冗余代码。
JavaScript 中 Boolean 类型本身不常显式构造,真正关键的是“哪些值在条件语句中被当作 true 或 false”,也就是所谓的“真值(truthy)”和“假值(falsy)”。掌握这些规则,才能写出更简洁、更可靠的条件判断。
只有 6 个值在布尔上下文中会被自动转为 false:
false0(数字零)-0(负零,也属于 falsy)0n(BigInt 零)""(空字符串)null 和 undefined
注意:NaN 是 falsy,但它是数字类型;document.all 是历史遗留的特殊 falsy 对象(不推荐使用,仅作了解)。
不必总写 === true 或 == true。比如:
立即学习“Java免费学习笔记(深入)”;
if (str) —— 判断字符串非空且非 undefined/null
if (str !== "" && str !== undefined && str !== null)
if (arr.length) —— 判断数组非空(比 if (arr && arr.length > 0) 更直接)if (obj && obj.name) —— 安全访问嵌套属性(短路逻辑)有些值看似“假”,但容易误判:
"0" 是 truthy(字符串非空),if ("0") 会进入分支[] 和 {} 都是 truthy,即使为空:if ([]) 为 true
Boolean(new Boolean(false)) 是 true(包装对象永远 truthy)若需严格判断布尔值,用 === true 或 === false;若判断是否存在/有内容,优先用 falsy 检查。
实际开发中高频写法:
const name = userName || "guest"
loading && showLoadingSpinner()
user?.profile?.avatar ?? "/default.png"
isActive ? "active" : "inactive"(比 String(isActive) 更明确)不复杂但容易忽略:简洁的前提是理解底层规则,而不是盲目缩写。