undefined 是变量声明后未赋值时的自然默认值,由引擎自动赋予;函数无返回、漏传参数、读取对象不存在属性或数组越界索引、void 表达式等也会返回 undefined。

JavaScript 中,undefined 是变量声明后未赋值时的自然默认值,它不是开发者手动写入的,而是引擎自动赋予的初始状态。
变量声明即得 undefined
使用 var、let 或 const 声明变量但不赋值,该变量立即持有 undefined 值:
-
let name;→name的值就是undefined -
var count;→ 同样为undefined(尽管存在变量提升) -
const flag;→ 会报语法错误,因为const要求必须初始化
typeof 检测始终返回 "undefined"
无论变量是否被声明过,typeof 对未初始化变量或根本未声明的标识符都返回字符串 "undefined":
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
let x;→typeof x === "undefined"✔️ -
typeof y(y完全没声明)→ 也返回"undefined",但这是typeof的保护机制,不代表y存在 - 注意:
y直接访问会抛出ReferenceError,而x访问只是得到undefined
常见触发 undefined 的典型场景
除了变量声明未赋值,以下情况也会自然产出 undefined:
- 函数无
return语句 → 执行结果为undefined - 调用函数时漏传参数 → 对应形参值为
undefined - 读取对象不存在的属性 → 如
{a: 1}.b返回undefined - 读取数组越界索引 → 如
[1,2][5]返回undefined -
void表达式 →void 0、void(1+1)等均返回undefined
undefined 不等于未声明
这是关键区分点:
-
let a;:已声明,值为undefined,可安全读取和比较 -
console.log(b);(b从未声明):直接报错ReferenceError: b is not defined - 判断逻辑中推荐用
=== undefined或typeof x === 'undefined',避免误判null或0等假值
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










