== null能同时判断null和undefined,因为javascript规定null == undefined为true,且二者是唯一互相相等的值,故value == null等价于value === null || value === undefined,既简洁又精准,不会误判0、false、""等falsy值。

直接用 == null 就能同时判断 null 和 undefined,这是最简洁可靠的写法。
为什么 == null 能同时匹配 null 和 undefined
因为 JavaScript 中 null == undefined 为 true,且只有 null 和 undefined 两者互相相等(在抽象相等比较下),其他值都不会与 null 相等。所以:
-
value == null等价于value === null || value === undefined - 它不会误判
0、false、''等假值 - 比手写两个严格相等判断更简短,也比
!value更精准
别用 !value 替代,容易出错
!value 检查的是“falsy 值”,包括:false、0、-0、''、NaN、null、undefined。如果你只想排除空值,却意外过滤了合法的 0 或空字符串,逻辑就错了。
一款AI办公效率工具,主要用于适用于兼容 Agent Skills 产品的通用(非 OpenClaw)Nutrient DWS 文档处理技能。最佳搭配:Claude Code、Codex CLI、Gemini CLI、Cursor、Wi...,适合需要提升相关任务效率的用户。
- ❌
if (!user.age)—— 当age = 0时也会进分支,不合理 - ✅
if (user.age == null)—— 只在undefined或null时成立
需要区分 null 和 undefined?用 ===
如果业务逻辑要求分别处理两者(比如 undefined 表示未赋值,null 表示有意清空),那就必须用严格相等:
value === undefinedvalue === null- 注意:全局
undefined可被重写(ES5-),稳妥写法是void 0或用 typeof:typeof value === 'undefined'
TypeScript 中可借助可选链和空值合并
在 TS + 支持环境里,常用组合更安全:
-
obj?.prop ?? 'default'—— 安全取值并提供默认 -
if (obj?.prop != null)—— 先可选链,再判空,避免报错 - 类型系统本身会在编译期提醒你可能为
undefined或null,减少运行时意外










