协慌网

登录 贡献 社区

如何在 JavaScript 中检查未定义的变量

我想检查变量是否已定义。例如,以下引发了未定义的错误

alert( x );

我怎么能抓到这个错误?

答案

在 JavaScript 中, null是一个对象。对于不存在的事物,还有另一个值, undefined 。对于几乎无法在文档中找到某些结构的所有情况,DOM 都返回null ,但在 JavaScript 本身中, undefined是使用的值。

第二,不,没有直接的等价物。如果您确实想要专门检查null ,请执行以下操作:

if (yourvar === null) // Does not execute if yourvar is `undefined`

如果要检查变量是否存在,那只能通过try / catch来完成,因为typeof会将未声明的变量和使用undefined值声明的变量视为等效变量。

但是,检查是否声明一个变量而不是undefined

if (typeof yourvar !== 'undefined') // Any scope

请注意,这是无稽之谈,因为可能存在名称undefined的变量:

if (yourvar !== undefined)

如果您想知道成员是否存在独立但不关心其价值是什么:

if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance

如果你想知道变量是否真实

if (yourvar)

资源

真正测试变量是否undefined的唯一方法是执行以下操作。请记住,undefined 是 JavaScript 中的一个对象。

if (typeof someVar === 'undefined') {
  // Your variable is undefined
}

此线程中的其他一些解决方案将使您相信变量未定义,即使它已被定义(例如,值为 NULL 或 0)。

从技术上讲,正确的解决方案是(我相信):

typeof x === "undefined"

你有时会变得懒惰和使用

x == null

但是这允许未定义的变量 x 和包含 null 的变量 x 都返回 true。