可能是重复问题:
JavaScript中检测未定义对象属性
从以下JavaScript示例中,
try {
if(jsVar) {
proceed();
}
}
catch(e) {
alert(e);
}
这个jsVar在另一个文件中被声明和初始化。
问题是,当这段代码在另一个文件(其中jsVar被声明和初始化)被执行之前执行时,会抛出未定义的错误。因此,它被try和catch包围。
有什么比try catch更好的处理未定义错误的方法吗?
可能是重复问题:
JavaScript中检测未定义对象属性
从以下JavaScript示例中,
try {
if(jsVar) {
proceed();
}
}
catch(e) {
alert(e);
}
这个jsVar在另一个文件中被声明和初始化。
问题是,当这段代码在另一个文件(其中jsVar被声明和初始化)被执行之前执行时,会抛出未定义的错误。因此,它被try和catch包围。
有什么比try catch更好的处理未定义错误的方法吗?
你可以通过以下方法验证这个事实:
if (typeof jsVar == 'undefined') {
...
}
通常情况下在JavaScript中会有多种方法来实现这个目的:
typeof foo !== 'undefined'
window.foo !== undefined
'foo' in window
前两个应该是等效的(只要foo
没有被本地变量遮盖),而最后一个将返回true
如果全局变量被定义,但未初始化(或明确设置为undefined
)。
if
条件失败,不执行其语句:null、undefined、false、NaN、数字0和空字符串''。if (jsVar && jsVar == true)
proceed();
true
,因为您没有使用严格比较(在JS中,例如 '1' == true
是真的!);如果变量未定义,这仍会抛出引用错误,即您的代码无法解决Madhu的问题。 - Christoph