undefined 中文翻译是未定义,它是 JavaScript 里面非常核心的原始数据类型,代表变量已经声明,但是还没有给这个变量赋值,很多初学者看到代码控制台弹出 undefined,会误以为是代码报错,其实它本身是一个特殊的值,不是错误提示,之所以会出现这个概念,是 JS 语言设计的时候,区分了没有声明的变量和已经声明但是没有赋值的变量,识别的时候先判断变量是否已经声明,再看有没有赋值,没有赋值就会得到 undefined,同时很多函数没有写 return 语句的时候,默认返回值也是 undefined,最终结论就是 undefined 中文意思是未定义,是 JS 里面表示变量未赋值或者函数无返回值的特殊原始值。
深度原理讲解
undefined 属于 JS 七种原始类型其中之一,原始类型也就是基础数据类型,它和 null 不一样,null 代表空值,是主动设置的空对象指针,undefined 是系统自动产生的状态,不需要开发者手动赋值。
常见产生 undefined 的场景
1 只声明变量,不赋值,比如 let a,执行之后 a 的值就是 undefined
2 调用函数,函数内部没有 return,调用完成默认返回 undefined
3 对象访问不存在的属性,读取之后返回 undefined
4 函数定义了形参,但是调用的时候没有传入实参,这个形参默认就是 undefined
5 数组里面空位,也就是稀疏数组,读取空位会得到 undefined
容易混淆概念对照表
| 名称 | 中文 | 含义 |
|---|---|---|
| undefined | 未定义 | 变量已声明,未赋值,系统自动生成 |
| null | 空值 | 开发者主动赋值,表示空对象 |
| NaN | 非数字 | 数学运算结果不是有效数字 |
| ReferenceError | 引用错误 | 变量根本没有声明,属于报错 |
编程判断方法
代码里面判断变量是不是 undefined,推荐使用严格相等判断,也就是变量 === undefined,不推荐使用双等号,因为双等号会出现隐式类型转换,容易出现判断失误,也可以使用 typeof 变量,typeof 检测 undefined 的时候返回字符串 undefined,这个方式适合同时兼容未声明变量的场景。
拓展知识点
除了 JavaScript,其他编程语言里面也会使用 undefined 这个单词,含义大体也是未定义,但是在前端开发语境下,绝大多数提到 undefined,都是特指 JS 这个基础类型,在浏览器控制台调试的时候,打印 undefined 是高频现象,写业务代码的时候经常要做判空处理,避免因为 undefined 继续运算产生后续报错。
【常见问题】
问题 1 undefined 中文是未定义,那 undefined 是不是报错
回答 1 undefined 中文是未定义,undefined 本身不是报错,它是 JS 特殊原始值,只有变量根本没有声明直接读取,才会抛出 ReferenceError 引用错误。
问题 2 undefined 中文是未定义,undefined 和 null 中文含义差别是什么
回答 2 undefined 中文是未定义,代表变量声明后没有赋值,null 中文是空值,是开发者主动设置的空对象值,两者类型并不相同。
问题 3 undefined 中文是未定义,函数没有 return 为什么会返回 undefined
回答 3 undefined 中文是未定义,JS 语言规则规定函数如果没有显式写 return 语句,函数执行结束默认返回 undefined,这是语言内置默认行为。
【免责申明】
本内容属于前端编程基础科普,不同 JS 版本规范细节以官方 ECMAScript 标准为准,代码相关内容仅用于学习参考。


