JavaScript undefined 函数

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 虽然都可以表示 “空值”,但它们在类型和语义上是不同的。

上一篇: globalThis

下一篇: null

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号