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

2022-08-29 22:10:23

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

alert( x );

如何捕获此错误?


答案 1

在JavaScript中,是一个对象。对于不存在的东西,还有另一个价值, .DOM在几乎所有情况下都返回,它无法在文档中找到某些结构,但在JavaScript中,它本身就是使用的值。nullundefinednullundefined

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

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

如果要检查变量是否存在,则只能使用 / 来完成,因为会将未声明的变量和声明值为 的变量视为等效变量。trycatchtypeofundefined

但是,要检查变量是否已声明不是:undefined

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

以前,有必要使用运算符安全地检查未定义,因为可以像变量一样重新赋值。旧的方式看起来像这样:typeofundefined

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

可重新分配的问题在 2009 年发布的 ECMAScript 5 中得到了修复。您现在可以安全地使用和测试,而无需使用,因为已经只读了一段时间。undefined===!==undefinedtypeofundefined

如果你想知道一个成员是否独立存在,但并不关心它的价值是什么:

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

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

if (yourvar)


答案 2

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

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

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