JavaScript数据类型 - Undefined类型

以你之姓@ 2022-12-01 15:50 245阅读 0赞

Undefined 类型

Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其进行初始化时,这个变量的值就是undefined,例如:

  1. var message;
  2. console.log(message); //undefined
  3. var message = undefined;
  4. console.log(message); //undefined

在这个例子的第一段中,只声明了变量message,但未对其进行初始化。所以在控制台输出时会得到一个undefined。而第二段代码中我们使用了undefined值显示的初始化了message变量,得到的结果仍然是undefined。但实际上我们没必要这么做的,因为就像第一段代码中,只要是未经初始化的变量默认都会取值undefined。

一般而言,不存在需要显示地把一个变量设置为undefined值的情况。字面值undefined的主要目的是用于比较。不过包含undefined值的变量和尚未定义的变量还是不一样的。看看下面这个例子:

  1. var message; //这个变量声明但未初始化,取得默认值undefined
  2. //var age; //这个变量我们把它注释掉,所以就相当于并没有声明
  3. console.log(message);// undefined
  4. console.log(age); // 报错 age没有被定义

运行上面的代码,第一个console会打印输出undefined,而第二个console则会产生错误,因为变量age根本就没有声明。对于尚未声明过的变量,只能执行一项操作,就是用typeof检查数据类型,这个时候是不会报错的。

然而,令人困惑的是:对于已经声明但未初始化的变量执行typeof操作会返回undefined值,而对尚未声明的变量执行typeof操作,结果同样返回undefined的值,看下面的例子:

  1. var message; //声明变量但未初始化
  2. //var age; //未声明的变量
  3. console.log(typeof message); //undefined
  4. console.log(typeof age); //undefined

结果表明:对于声明未初始化和未声明的变量执行typeof操作都返回了undefined值;其实这个结果也有其逻辑上的合理性,因为虽然这两种变量从技术角度看有着本质的区别,但是实际上无论对哪种变量都不可能执行真正的操作。

tips:

即便未初始化的变量会自动被赋予undefined值,但显示的初始化变量依然是明智的选择,也是墙裂推荐的选择。因为如果能够做到这一点,那么当typeof操作符返回undefined值时,我们就知道被检测的变量还没有被定义,而不是尚未初始化。

发表评论

表情:
评论列表 (有 0 条评论,245人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaScript数据类型 - Object类型

    创建对象一 ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例并为其添加