javascript中假值仅有6个:false、0、-0、0n、""、null、undefined、nan(共8个,原文有误);其余均为真值,可用其简化条件判断,但需注意0、""等可能具业务含义,应依场景慎用。

JavaScript中if条件可以直接利用真值(truthy)和假值(falsy)特性,省去显式比较,让判断更简洁、可读性更强。
哪些值是假值(falsy)?
JS中只有6个假值:false、0、-0、0n(BigInt零)、""(空字符串)、null、undefined、NaN。其余所有值都是真值(包括{}、[]、new Date()、function(){}等)。
- 空对象{} 是真值,if ({})会执行
- 空数组[] 是真值,if ([])也会执行
- 0 == false为true,但0 === false为false——注意类型差异
用假值特性简化常见判断
避免冗余写法,比如if (arr.length > 0)可简化为if (arr.length);if (str !== '' && str != null)可简化为if (str)。
- 检查变量是否存在且非空:if (value) —— 自动过滤null/undefined/''/0等
- 检查数组是否非空:if (arr?.length)(加可选链防报错)
- 检查对象是否有属性:if (obj?.prop),比obj && obj.prop !== undefined更简
- 默认值赋值:const name = userInput || 'guest'(注意:若userInput为0或''会取默认值)
需谨慎使用的场景
真值判断虽方便,但可能掩盖业务意图。比如数字0常有实际意义(如用户余额为0),此时if (balance)会跳过,应改用if (balance !== undefined && balance !== null)或if (balance != null)。
- 数值0、空字符串''、false本身可能是有效业务状态,不能一概视为“不存在”
- 使用??(空值合并)替代||可避免误判: const count = input ?? 0(仅当input为null或undefined时取0)
- 对Boolean语义明确的变量(如isLoading),仍建议用if (isLoading === true)或直接if (isLoading)(因它本就是布尔值)
结合逻辑运算符组合判断
利用&&和||的短路特性,能写出更紧凑的条件逻辑。
- 安全访问嵌套属性:if (user && user.profile && user.profile.avatar) → 可简化为if (user?.profile?.avatar)
- 多条件任一满足:if (a || b || c) 等价于if ([a,b,c].some(Boolean)),但前者更轻量
- 条件执行副作用:isLoggedIn && showWelcomeMessage()(isLoggedIn为真才调用)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











