JavaScript undefined 语法
undefined 是 JavaScript 的一个原始值,它表示一个变量未被赋值。当一个变量被声明但没有赋值时,它的默认值就是 undefined。
语法:
const value = undefined;说明:
undefined 比较特殊,它既是一个值,也是一种数据类型(undefined 类型的唯一成员)。
当以下情况发生时,会产生 undefined 值。
- 声明了一个变量,但该变量没有初始化,此时该变量的值就是 undefined。
- 访问对象中一个不存在的属性,会返回 undefined。
- 函数没有 return 语句,或者 return 语句后面没有跟任何值,此时函数的返回值就是 undefined。
- 函数的参数没有被显式传入时,该参数的值就是 undefined。
- 访问数组中不存在的元素(稀疏数组中的空槽),该元素的值就是 undefined。
提示:
- undefined 也是一个原始数据类型,与其他原始类型(如 null、boolean、number、string、bigint、symbol)并列。
- undefined 是一个全局属性(顶层对象的属性),我们可以直接使用而无需创建实例。
JavaScript undefined 摘要
| 属于 | JavaScript 数据类型 |
|---|---|
| 使用频率 | 高 |
| 官方文档 | 查看 |
| MDN | 查看 |
JavaScript undefined 示例
接下来,我们通过几个简单的例子来讲解一下 JavaScript undefined 是如何使用的。
示例 1:声明变量,但未赋值
let user;
const message = undefined;
console.log(user);
console.log(message);运行结果如下。
undefined
undefined分析:
当一个变量被声明后,如果没有显式地为其赋值,它就会使用 undefined 作为值。
示例 2:函数没有返回任何值
const sayHi = () => {
console.log("Hello, World!");
};
const result = sayHi();
console.log(result);运行结果如下。
Hello, World!
undefined分析:
如果一个函数没有 return 语句,或者 return 语句后面没有跟任何值,那么它将隐式地返回 undefined。
示例 3:访问对象不存在的属性
const person = {
name: "Jack",
age: 20
};
console.log(person.name);
console.log(person.address);运行结果如下。
Jack
undefined分析:
如果我们尝试访问一个对象上不存在的属性,此时 JavaScript 不会报错,而是会返回 undefined。我们可以通过这个特性,来判断一个对象是否包含某个属性。
undefined 与 null 的区别
与其他语言不一样,JavaScript 使用了两个值来表示 “空”:undefined 是一个表示 “无” 的基本类型,而 null 是一个表示 “无” 的对象。它们之间的区别如下。
- undefined 代表变量已被声明,但尚未被赋值(初始化为空)。而 null 代表内存是存在该变量的,只是暂时设置为空而已。
- undefined 转为数值是 NaN,而 null 转为数值是 0。
- 使用 typeof 判断 undefined,返回的是 undefined(它属于基本类型之一);而使用 typeof 判断 null,返回的是 object。
对于 undefined 和 null 的使用,我们需要清楚以下 2 点。
- 想要判断某个变量有值,应该使用 undefined,比如 if(xxx===undefined){}。
- 想要设置一个初始的空值(如定时器),可以使用 null,比如 let timer=null;。
示例 4:undefined vs null
console.log(undefined === null);
console.log(undefined == null);
console.log(typeof undefined);
console.log(typeof null);运行结果如下。
false
true
undefined
object分析:
typeof null 返回 "object",这是 JavaScript 语言的一个历史遗留 bug,小伙伴们不用纠结太多。因此在实际开发中,我们应该使用 “===(严格相等)” 来区分 undefined 和 null。
实际上,undefined 和 null 虽然都可以表示 “空值”,但它们在类型和语义上是不同的。
