前端判断变量不为 null 和 undefined 的方法
在前端开发(JavaScript/TypeScript)中,判断一个变量既不等于 undefined 也不等于 null,通常被称为判断'空值'或'有效存在'。
以下是几种常用且推荐的方法,你可以根据场景选择:
1. 最常用:宽松相等法(推荐)
这是最简洁、最符合语言习惯的写法。利用 == null 的特性,它能同时匹配 null 和 undefined。
if (value != null) {
// 代码逻辑
// 进入这里说明 value 既不是 null,也不是 undefined
// value 可以是 0, false, '', [] 等任何其他值
}
- 原理: 在 JavaScript 中,
null == undefined返回true。因此value != null等价于value !== null && value !== undefined。 - 优点: 代码极简,性能好,是社区公认的'最佳实践'之一。
2. 严格判断:逻辑或(Explicit OR)
如果你追求代码的绝对清晰,或者团队规范禁止使用 ==,可以使用严格全等 === 配合逻辑非。
if (value !== null && value !== undefined) {
// 代码逻辑
}
- 优点: 语义非常明确,没有任何隐式转换,逻辑清晰。
- 缺点: 相对冗长。
3. 现代语法:空值合并运算符(Nullish Coalescing)
如果你是在进行赋值或条件判断(例如设置默认值),这是 ES2020 提供的最新语法。
// 场景 A:获取一个肯定有值的变量
const result = value ?? '默认值';
// 场景 B:在 if 中使用(判断是否存在)
if ((value ?? false) !== false) {
// 或者更直接地结合布尔值判断
}
- 优点: 专门用于处理
null和undefined,不会把0、false、''误判为'空'。 - 注意: 运算符在非常旧的浏览器(如 IE)中不支持,需要 Babel 转译。


