关于javascript:如果我不知道它们是否存在,如何将变量与undefined进行比较?

How to compare variables to undefined, if I don’t know whether they exist?

本问题已经有最佳答案,请猛点这里访问。

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

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

有没有办法不使用trycatch


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

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

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


1
2
3
4
if (obj === undefined)
{
    // Create obj
}

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

另外,如果您要做大量的javascript,我建议您首先通过jslint http://www.jslint.com运行代码,这可能看起来有点苛刻,但jslint警告您的大多数事情最终会回来咬您。


1
if (document.getElementById('theElement')) // do whatever after this

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

1
if (blah) ...

做:

1
if (window.blah) ...

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

1
2
3
4
5
if(<object or variable>) {
     //take actions if object is not undefined
} else {
     //take actions if object is undefined
}


1
2
3
4
if (!obj) {
    // object (not class!) doesn't exist yet
}
else ...