109

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

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

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

4

5 回答 5

208

最好的方法是检查类型,因为undefined//在 JSnullfalse是一件棘手的事情。所以:

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

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

于 2010-05-06T07:00:00.973 回答
70
if (obj === undefined)
{
    // Create obj
}

如果你正在做大量的 javascript 编程,你应该养成使用的习惯,===并且!==当你想要进行特定类型的检查时。

此外,如果您要编写大量的 javascript,我建议通过 JSLint http://www.jslint.com运行代码,起初它可能看起来有点苛刻,但 JSLint 警告您的大部分事情最终都会到来回来咬你。

于 2012-08-01T04:45:33.107 回答
2
if (document.getElementById('theElement')) // do whatever after this

对于引发错误的未定义事物,请测试父对象的属性名称,而不仅仅是变量名称 - 所以而不是:

if (blah) ...

做:

if (window.blah) ...
于 2010-05-06T06:37:27.267 回答
0

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

if(<object or variable>) {
     //take actions if object is not undefined
} else {
     //take actions if object is undefined
}
于 2011-07-06T19:09:47.060 回答
-2
if (!obj) {
    // object (not class!) doesn't exist yet
}
else ...
于 2010-05-06T06:48:37.487 回答