JS Undefined类型

undefined 是 Undefined 类型的唯一值,它表示未定义的值。当声明变量未赋值时,或者定义属性未设置值时,默认值都为 undefined。

示例1

undefined 派生自 null,null 和 undefined 都表示空缺的值,转化为布尔值时都是假值,可以相等。
console.log(null == undefined);  //返回 true

null 和 undefined 属于两种不同类型,使用全等运算符(==)或 typeof 运算符可以进行检测。
console.log(null === undefined);  //false
console.log(typeof null);  //返回"object"
console.log(typeof undefined);  //返回"undefined"

示例2

检测一个变量是否初始化,可以使用 undefined 快速检测。
var a; //声明变量
console.log(a);  //返回变量默认值为 undefined
(a == undefined) && (a = 0);  //检测变量是否初始化,否则为其赋值
console.log(a);  //返回初始值 0

也可以使用 typeof 运算符检测变量的类型是否为 undefined。
(typeof a == "undefined") && (a = 0);  //检测变量是否初始化,否则为其赋值

示例3

在下面代码中,声明了变量 a,但没有声明变量 b,然后使用 typeof 运算符检测它们的类型,返回的值都是字符串 "undefined"。说明不管是声明的变量,还是未声明的变量,都可以通过 typeof 运算符检测变量是否初始化。
var a;
console.log(typeof a);  //返回"undefined”
console.log(typeof b);  //返回"undefined"

对于未声明的变量 b 来说,如果直接在表达式中使用,会引发异常。
console.log(b == undefined); //提75未定义的错误信息

示例4

对于函数来说,如果没有明确的返回值,则默认返回值也为
function f(){}
console.log(f());  //返回"undefined"

undefined 隐含着意外的空值,而 null 隐含着意料之中的空值。因此,设置一个变量、参数为空值时,建议使用 null,而不是 undefined。