来自以下javascript示例
try {
if(jsVar) {
proceed();
}
}catch(e){
alert(e);
}
这个jsVar在另一个js罚款中声明并初始化。
问题是,当代码在执行其他文件(声明和启动的文件)之前执行时,代码会抛出未定义的错误。这就是为什么它被try和catch包围着。
处理这个未定义的错误比尝试catch更好吗?
答案 0 :(得分:87)
您可以使用
查看事实if (typeof(jsVar) == 'undefined') {
...
}
答案 1 :(得分:8)
与JavaScript一样,有多种方法可以做到这一点:
typeof foo !== 'undefined'
window.foo !== undefined
'foo' in window
前两个应该是等价的(只要foo
没有被局部变量遮蔽),而最后一个将返回true
如果定义了全局变量,但未初始化(或明确设置为undefined
)。
答案 2 :(得分:0)
在javascript中,以下值将导致if条件失败并且不执行其语句:null,undefined,false,NaN,数字0和空字符串''。
假设变量jsVar是一个布尔值,并且我们想在jsVar为true时调用proceed()方法,我们可以进行以下检查。
if (jsVar && jsVar == true)
proceed();
上面的代码片段首先检查是否已定义jsVar,然后检查其值是否为true。只有满足两个条件时才会满足if条件。
如果jsVar不是布尔值,那么我们可以在上面的代码中用相应的检查代替jsVar == true。