我对如何最好地检查javascript中是否未定义变量感到困惑。我一直在这样做:
myVar === undefined;
但是在所有情况下使用typeof更好吗?
typeof myVar === undefined;
我曾见过undefined
vs "undefined"
的使用情况怎么样?
答案 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将始终声明为参数