在JavaScript中,您可以声明一个变量,如果它是undefined
,您可以检查variable == undefined
;我知道,但是你怎么能比较一个你还不知道的值,如果它在内存中呢?
例如,我有一个在用户单击按钮时创建的类。在此之前,该类是未定义的 - 它在任何地方都不存在;我怎么比较呢?
有没有办法不使用try
- catch
?
答案 0 :(得分:174)
最好的方法是检查类型,因为undefined
/ null
/ false
在JS中是个棘手的问题。
所以:
if(typeof obj !== "undefined") {
// obj is a valid variable, do something here.
}
请注意,typeof
始终返回一个字符串,如果该变量根本不存在,则不会生成错误。
答案 1 :(得分:48)
if (obj === undefined)
{
// Create obj
}
如果你正在进行广泛的javascript编程,你应该养成使用===和!==的习惯,当你想进行特定类型的检查时。
另外如果你要做相当数量的javascript,我建议你通过JSLint运行代码http://www.jslint.com一开始看起来有点严厉,但JSLint警告你的大部分内容最终都会回来咬你。
答案 2 :(得分:2)
if (document.getElementById('theElement')) // do whatever after this
对于抛出错误的未定义的东西,测试父对象的属性名称而不仅仅是变量名称 - 所以代替:
if (blah) ...
做的:
if (window.blah) ...
答案 3 :(得分:1)
!undefined
在javascript中是正确的,因此如果您想知道您的变量或对象是否未定义并且想要采取行动,您可以执行以下操作:
if(<object or variable>) {
//take actions if object is not undefined
} else {
//take actions if object is undefined
}
答案 4 :(得分:0)
if (!obj) {
// object (not class!) doesn't exist yet
}
else ...