繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM