null在JavaScript逻辑运算中被转为false:&&返回首个假值(含null),||返回首个真值(跳过null),!null为true;设默认值应优先用??而非||,因||会误触发0/""等假值。

在 JavaScript 中,null 参与逻辑运算时,会先被隐式转换为布尔值,再按逻辑规则计算结果。它的布尔值为 false,因此在 &&、|| 和 ! 运算中表现得像“假值”,但要注意它不是 undefined 或 0,类型和用途完全不同。
null 在 &&(逻辑与)中的行为
&& 运算符返回第一个“假值”,或最后一个值(如果全为真值)。由于 null 是假值,只要它出现在左侧,整个表达式就立即返回 null;若在右侧,只有左侧为真值时才会继续判断并返回 null:
-
null && "hello"→null(左侧为假,直接返回) -
"world" && null→null(左侧为真,返回右侧) -
1 && null && []→null(遇到第一个假值即停止)
null 在 ||(逻辑或)中的行为
|| 返回第一个“真值”,或最后一个值(如果全为假值)。因为 null 是假值,它不会被直接返回,除非它是表达式中最后一个操作数且前面全是假值:
-
null || "default"→"default"(左侧假,返回右侧真值) -
0 || null || false || "fallback"→"fallback"(跳过所有假值,返回首个真值) -
null || undefined || 0 || ""→""(全部为假值,返回最后一个)
使用 null 做默认值的常见写法及注意事项
很多人用 || 给变量设默认值,比如 const name = userInput || "guest"。但这种方式对 null 有效,对其他假值(如 0、false、"")也会触发,默认逻辑可能不符合预期:
立即学习“Java免费学习笔记(深入)”;
- 想只在
null或undefined时提供默认值?应改用空值合并操作符??:const count = input ?? 10——input是null或undefined才用10,0或false会被保留 -
??优先级低于||和&&,混合使用时建议加括号:(a ?? b) || c - 旧环境不支持
???可用value == null ? defaultValue : value模拟(== null同时匹配null和undefined)
!(逻辑非)对 null 的处理
! 将操作数转为布尔值后取反:null → false → true。双重非可用来安全转布尔:
-
!null→true -
!!null→false(等价于Boolean(null)) - 注意:
!null === true,但null == false是false(因为抽象相等会做类型转换,而null只与undefined相等)


















