javascript的Undefined类型

发布时间:2019-09-18编辑:脚本学堂
本文介绍下,javascript中Undefined类型的相关知识,有需要的朋友参考下吧。

javascript中,Undefined类型只有一个值,即特殊的undefined。
在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。

例如:
 

复制代码 代码示例:
var message;
alert(message == undefined); //true

以上示例只声明了变量message,但未对其进行初始化。
比较这个变量与undefined字面量,结果表明它们是相等的。

与以下的例子等价:
 

复制代码 代码示例:
var message = undefined;
alert(message == undefined); //true

这个例子使用undefined值显式初始化了变量message。但没有必要这么做,因为未经初始化的值默认就会取得undefined值。
一般而言,不存在需要显式地把一个变量设置为undefined值的情况。字面值undefined的主要目的是用于比较。
不过,包含undefined值的变量与尚未定义的变量还是不一样的。

例子:
 

复制代码 代码示例:
var message;     //这个变量声明之后默认取得了undefined值
alert(message);  //“undefined”
alert(age);      //发生错误

运行上面的代码,第一个警告框会显示变量message的值,即“undefined”。而第二个警告框——由于传递给alert()函数的是尚未声明变量age——则导致一个错误。对于尚未声明过的变量,只能执行一项操作,即使用typeof操作符检测其数据类型。

然而,对于未初始化的变量执行typeof操作符会返回undefined值,而对未声明的变量执行typeof操作符同样也会返回undefined值。来看下面的例子:
 

复制代码 代码示例:
var message;
alert(typeof message);  //“undefined”
alert(typeof age);      //“undefined”

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

即便未初始化的变量会自动赋予undefined值,但建议大家养成显式初始化变量依然是明智的选择。
如果能够做到这一点,那么当typeof操作符返回”undefined”值时,就知道被检测的变量是有还是没有被声明的,而不是尚未初始化的。