我对如何最好地检查 javascript 中的变量是否未定义感到有些困惑。我一直在这样做:
myVar === undefined;
但是在所有情况下使用 typeof 会更好吗?
typeof myVar === undefined;
我也见过undefined
vs的使用呢?"undefined"
我对如何最好地检查 javascript 中的变量是否未定义感到有些困惑。我一直在这样做:
myVar === undefined;
但是在所有情况下使用 typeof 会更好吗?
typeof myVar === undefined;
我也见过undefined
vs的使用呢?"undefined"
这是最好的检查方法——完全万无一失:
typeof myVar === "undefined"
这没关系,但如果有人无益地覆盖了全局undefined
值,它可能会失败:
myVar === undefined;
不得不说,ECMAScript 5 指定它undefined
是只读的,所以上面的内容在任何符合的浏览器中总是安全的。
这永远不会起作用,因为它最终会比较"undefined" === undefined
(不同类型):
typeof myVar === undefined;
此测试将始终按预期工作:
typeof a === 'undefined'
由于 的值undefined
可以更改,因此像这样的测试并不总是可靠的:
a = {}
a.b === undefined
在这些情况下,您可以void 0
改为测试:
a.b === void 0
// true
但是,这不适用于单变量测试:
a === void 0 // <-- error: cannot find 'a'
您可以通过测试来解决这个问题window.a
,但应该首选第一种方法。
我相信在最常见的情况下,例如在检查参数是否通过函数传递时,myVar === undefined
就足够了,因为 myVar 将始终被声明为参数