我想检查变量是否已定义。例如,以下抛出未定义的错误
alert( x );
我怎样才能捕捉到这个错误?
我想检查变量是否已定义。例如,以下抛出未定义的错误
alert( x );
我怎样才能捕捉到这个错误?
在 JavaScript 中,null
是一个对象。不存在的东西还有另一个value,undefined
. DOMnull
在几乎所有无法在文档中找到某些结构的情况下都会返回,但在 JavaScript 中它本身undefined
就是使用的值。
其次,不,没有直接的等价物。如果您真的想专门检查null
,请执行以下操作:
if (yourvar === null) // Does not execute if yourvar is `undefined`
如果要检查变量是否存在,则只能使用try
/来完成catch
,因为typeof
会将未声明的变量和使用 的值声明的变量undefined
视为等价的。
但是,要检查变量是否已声明并且不是undefined
:
if (yourvar !== undefined) // Any scope
以前,必须使用typeof
运算符来安全地检查 undefined,因为可以undefined
像变量一样重新分配。旧的方式是这样的:
if (typeof yourvar !== 'undefined') // Any scope
undefined
可重新分配的问题已在 2009 年发布的 ECMAScript 5 中得到修复。您现在可以安全地使用===
和!==
测试,undefined
而无需使用typeof
,undefined
因为一段时间以来一直处于只读状态。
如果你想知道一个成员是否独立存在但不关心它的value是什么:
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。
一个更简单、更简写的版本是:
if (!x) {
//Undefined
}
或者
if (typeof x !== "undefined") {
//Do something since x is defined.
}
我经常这样做:
function doSomething(variable)
{
var undef;
if(variable === undef)
{
alert('Hey moron, define this bad boy.');
}
}