12

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

myVar === undefined;

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

typeof myVar === undefined;

我也见过undefinedvs的使用呢?"undefined"

4

3 回答 3

20

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

typeof myVar === "undefined"

这没关系,但如果有人无益地覆盖了全局undefined值,它可能会失败:

myVar === undefined;

不得不说,ECMAScript 5 指定它undefined是只读的,所以上面的内容在任何符合的浏览器中总是安全的。

这永远不会起作用,因为它最终会比较"undefined" === undefined(不同类型):

typeof myVar === undefined;
于 2013-02-26T16:15:50.677 回答
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,但应该首选第一种方法。

于 2013-02-26T16:18:59.493 回答
0

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

于 2015-07-24T08:55:16.860 回答