JavaScript 中 Undefined 类型的底层含义

作者:袖梨 2026-07-15
Undefined 类型表示值处于“尚未被赋予具体意义”的原始状态,是 JavaScript 内置的被动产生的“无值”标识;它出现在未赋值变量、无 return 函数、缺省参数、不存在属性或越界数组索引等合法缺失场景,且 typeof 未声明变量也返回 "undefined"。

JavaScript 中 Undefined 类型 的底层含义,是表示一个值处于“尚未被赋予具体意义”的原始状态——它不是错误,也不是空对象,而是一种语言内置的、被动产生的“无值”标识。

它代表变量最初始的自然状态

当你用 letconstvar 声明一个变量但没给它赋值,JavaScript 引擎会自动把这个变量设为 undefined。这不是你写的,而是引擎默认做的。

  • let name;name 的值就是 undefined
  • const age;(语法错误,const 必须初始化)→ 反过来说明 undefined 是留给可选初始化的变量的“占位符”
  • 这种状态不依赖开发者操作,属于语言运行时的自然结果

它出现在多种“缺失但合法”的场景中

undefined 不只出现在未赋值变量里,只要 JS 遇到“本该有值、但当前没有提供”,就会返回它——而且不会报错,这是设计上的宽容。

  • 函数没写 return,执行完默认返回 undefined
  • 调用函数时少传参数,缺的参数值就是 undefined
  • 读取对象上不存在的属性,比如 obj.missingundefined
  • 访问数组越界索引,比如 [1,2][5]undefined

它和“未声明”有本质区别

很多人混淆 undefined 和 ReferenceError。关键看变量是否被声明过:

立即学习“Java免费学习笔记(深入)”;

  • let a; + console.log(a) → 输出 undefined(已声明,未赋值)
  • console.log(b) → 报错 ReferenceError: b is not defined(根本没声明)
  • 有趣的是:typeof b 仍返回 "undefined",这是唯一能安全探测未声明变量的方式

它是原始类型,且只有一个值

undefined 是 JavaScript 七种原始类型之一(String、Number、Boolean、Undefined、Null、Symbol、BigInt),它的值就叫 undefined,大小写敏感,不能被构造,也不能被继承。

  • typeof undefined"undefined"
  • undefined === undefinedtrue
  • void 0void(123) 等表达式也返回 undefined,常用于避免全局 undefined 被意外重写(ES5+ 已冻结,但老代码仍需注意)

相关文章

精彩推荐