You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()); // undefined
    
  • null 是开发者主动设置的空值状态:表示你明确指定这个位置的值就是空的,不存在预期值。JS引擎永远不会自动为变量赋值为null,所有的null一定是代码显式设置的结果。
    示例代码:
    // 明确表示当前选中的列表项为空
    let selectedItem = null;
    

2. 类型判定差异

  • undefined 是独立的基础类型,用typeof可以直接识别:
    typeof undefined === 'undefined'; // true
    
  • null 属于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:39:04