在javascript中检查undefined--我应该使用typeof吗?

时间:2013-02-26 16:13:42

标签: javascript undefined

我对如何最好地检查javascript中是否未定义变量感到困惑。我一直在这样做:

myVar === undefined;

但是在所有情况下使用typeof更好吗?

typeof myVar === undefined;

我曾见过undefined vs "undefined"的使用情况怎么样?

3 个答案:

答案 0 :(得分:19)

这是最好的检查方法 - 完全万无一失:

typeof myVar === "undefined"

这没关系,但如果有人无意中覆盖全局undefined值,则可能会失败:

myVar === undefined;

必须说ECMAScript 5指定undefined是只读的,因此在任何符合的浏览器中,上述内容始终是安全的。

这将永远不会有效,因为它最终会比较"undefined" === undefined(不同类型):

typeof myVar === undefined;

答案 1 :(得分:2)

此测试始终按预期工作:

typeof a === 'undefined'

由于可以更改undefined的值,因此这些测试并不总是可靠的:

a = {}
a.b === undefined

在这些情况下,您可以针对void 0进行测试:

a.b === void 0
// true

但是,这不适用于单变量测试:

a === void 0 // <-- error: cannot find 'a'

您可以通过针对window.a进行测试来解决这个问题,但应该首选第一种方法。

答案 2 :(得分:0)

我相信在最常见的情况下,例如检查参数是否通过函数传递时,myVar === undefined就足够了,因为myVar将始终声明为参数