== null 是最简可靠的空值判断写法,因 null == undefined 为 true 且仅二者互等,故等价于 === null || === undefined,不误判 0、false、空字符串等合法值。

直接用 == null 就行。它能同时捕获 undefined 和 null,写法简洁,语义准确,还不误判 0、false、空字符串等合法值。
为什么 == null 是最简可靠的写法
JavaScript 规定 null == undefined 为 true,且只有这两个值在抽象相等比较下互等。因此:
-
value == null等价于value === null || value === undefined - 不会把
0、''、false当作“空”误处理 - 比手写两个严格等判断更短,比
!value更精准
什么时候不能用 == null
当业务需要区分“未赋值”和“主动清空”时,就得分开判断:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 检查是否未初始化:
value === undefined(或更稳妥的typeof value === 'undefined') - 检查是否被设为空:
value === null - 注意:
typeof null返回"object",是历史 bug,不能靠它识别null
现代开发中的安全写法
在支持可选链(?.)和空值合并(??)的环境中,优先组合使用:
-
obj?.prop ?? 'default'—— 安全取值 + 提供默认 -
if (obj?.prop != null)—— 先避免报错,再判断是否为空 - TypeScript 编译期会提示可能为
null或undefined,减少运行时意外
千万别用 !value 替代
!value 检查的是所有 falsy 值,包括 0、-0、''、false、NaN、null、undefined:
- ❌
if (!user.age):当age = 0时也进分支,逻辑错误 - ✅
if (user.age == null):只在真正缺失时成立
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










