如何比较未定义的变量,如果我不知道他们是否存在?

在 JavaScript 中,你可以声明一个变量,如果它是 undefined,你可以检查 variable == undefined; 我知道这一点,但是如何比较一个你还不知道它是否在内存中的值呢?

例如,我有一个类,它是在用户单击按钮时创建的。在此之前,类是未定义的ーー它在任何地方都不存在; 我如何比较它?

有没有不使用 try-catch的方法?

165394 次浏览
if (document.getElementById('theElement')) // do whatever after this

对于引发错误的未定义内容,请测试父对象的属性名,而不仅仅是变量名-因此不要:

if (blah) ...

做:

if (window.blah) ...
if (!obj) {
// object (not class!) doesn't exist yet
}
else ...

最好的方法是检查 type,因为在 JS 中 undefined/null/false是一个棘手的问题。 所以:

if(typeof obj !== "undefined") {
// obj is a valid variable, do something here.
}

请注意,typeof总是返回一个字符串,如果变量根本不存在,则不会生成错误。

在 javascript 中 !undefined是正确的,所以如果你想知道你的变量或者对象是否是未定义的并且想要采取行动,你可以这样做:

if(<object or variable>) {
//take actions if object is not undefined
} else {
//take actions if object is undefined
}
if (obj === undefined)
{
// Create obj
}

If you are doing extensive javascript programming you should get in the habit of using === and !== when you want to make a type specific check.

另外,如果您要执行相当多的 javascript,我建议通过 JSLint http://www.jslint.com运行代码,乍看起来可能有点苛刻,但是 JSLint 警告您的大部分事情最终都会反咬一口。