最直接可靠的方式是用严格相等(===)分别判断:value === null 或 value === undefined;避免使用==;typeof value === 'undefined'可安全识别undefined;value == null可统一处理两种空值;不应手动赋undefined,应用null表示主动清空。

最直接可靠的方式是用严格相等(===)分别判断:value === null 或 value === undefined。这是语义清晰、不会误判的底线做法。
用 === 严格区分 null 和 undefined
两者类型不同,严格相等能准确识别:
-
null === null→ true,null === undefined→ false -
undefined === undefined→ true,undefined === null→ false - 避免使用
==:虽然null == undefined返回 true,但会掩盖语义差异,容易引发逻辑错误
用 typeof 辅助判断 undefined
typeof 对 undefined 是安全且精准的:
-
typeof value === 'undefined'能稳妥识别未声明变量或未赋值变量(比如let a;) - 注意:
typeof null返回'object',这是历史 bug,不能用于判断 null - 所以不要写
typeof value === 'null'—— 它永远为 false
检查“空值”时可巧用 == null
当只需统一处理两种空状态(如做兜底默认值),可以利用宽松相等的特性:
-
if (value == null)等价于if (value === null || value === undefined) - 简洁、常用,尤其适合参数校验或属性访问前的防御性判断
- 但仅限“是否为空”的场景;若需分别处理 null 和 undefined,则必须拆开判断
避免手动赋 undefined
除非特殊调试,否则不要写 let x = undefined:
- 它违背语义:
undefined是系统默认的“未定义”,手动赋值反而让人困惑——是忘了赋值?还是有意为之? - 想表示“主动清空”,就用
null;想留待后续赋值,直接声明let x;即可 - TypeScript 中更明显:
string | undefined表示“可能没这个字段”,string | null表示“字段存在但值为空”
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











