[英]checking for undefined in javascript— should I use typeof or not?
关于如何在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将始终声明为参数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.