JavaScript 中的 undefined

JavaScript 的 undefined 是个非常有趣的东西。

  1. 首先,undefined 在 JavaScript 里面是一种原始类型,并且类型有且仅有一个值,就是 undefined
  2. 其次,JavaScript 在全局范围定义了一个变量,这个变量的值是 undefined,他的名字也是 undefined

undefined 的不确定性

但是这个全局变量并非一个常量,也不是一个保留字。也就是说,这个值是可以被更改,所以这个语句完全是有效的:

1
undefined = "something else";

由于 undefined 的不确定性,所以需要判断一个变量是否是 undefined 的时候不能直接使用如下语句:

1
2
3
if (o.abc === undefined) {
// do something
}

使用技巧

常见的更为可靠的方法有:使用 typeof操作符、void 操作符、函数形参。typeof 操作符返回操作数的类型(字符串),若操作数是 undefined 类型,那么返回 “undefined”,使用方法如下:

1
typeof variable === "undefined";

void 操作符执行表达式并返回 undefined

1
2
3
function isUndefined(obj) {
return obj === void 0;
}

在 JavaScript 中,当函数的形参的个数多于实际传入的参数时,多余部分的形参的值将设成 undefined。故可通过此方法来确定 undefined

1
2
3
4
5
(functon abc(root, undefined) {
if (root.abc === undefined) {
// do something
}
}(this));
0%