JavaScript中null与undefined的核心区别是什么?
JavaScript中null与undefined的核心区别
1. 语义核心差异
这是两者最本质的区别:
undefined是JS引擎自动生成的未定义状态:表示某个本应存在值的位置还没有被赋值。常见的触发场景包括:- 声明变量但未赋值
- 访问对象不存在的属性
- 函数执行后没有显式return返回值
示例代码:
let test; console.log(test); // undefined console.log({}.age); // undefined const noReturn = () => {}; console.log(noReturn()); // undefinednull是开发者主动设置的空值状态:表示你明确指定这个位置的值就是空的,不存在预期值。JS引擎永远不会自动为变量赋值为null,所有的null一定是代码显式设置的结果。
示例代码:// 明确表示当前选中的列表项为空 let selectedItem = null;
2. 类型判定差异
undefined是独立的基础类型,用typeof可以直接识别:typeof undefined === 'undefined'; // truenull属于Object类型(这是JS早期设计遗留的历史Bug),typeof无法直接识别,必须用全等运算符判定:typeof null === 'object'; // true console.log(null === null); // 唯一可靠的null判定方式
3. 运算与比较差异
- 数值运算时的隐式转换结果不同:
2 + undefined; // NaN 2 + null; // 2,null会被隐式转换为0 - 相等判定结果不同:
null == undefined; // true,宽松相等规则下两者互等 null === undefined; // false,全等时因类型不一致返回假
实用经验:开发时不需要刻意记忆所有边界场景,只要遵循「JS自动返回的空都是undefined,主动设置空值一律用null」的规则,就能避免绝大多数使用混淆。
内容的提问来源于stack exchange,提问作者Samir Biswas
相关产品推荐
相关产品推荐

