如何在JavaScript中处理“未定义”

可能重复:
在JavaScript中检测未定义的对象属性

从下面的JavaScript示例

try { if(jsVar) { proceed(); } }catch(e){ alert(e); } 

这jsVar被宣布和草签在另一个js的罚款。

问题是当代码在另一个文件(声明和启动的地方)执行之前执行时,代码会抛出未定义的错误。 这就是为什么它被尝试和捕捉包围。

最好的办法来处理这个未定义的错误比尝试抓住?

你可以检查事实

 if (typeof(jsVar) == 'undefined') { ... } 

像JavaScript一样,有多种方法可以做到这一点:

 typeof foo !== 'undefined' window.foo !== undefined 'foo' in window 

前两个应该是等价的(只要foo不受局部variables的影响),而最后一个将返回true如果全局variables被定义,但没有初始化(或显式设置为undefined )。

在JavaScript中,以下值将导致if条件失败并且不执行其语句:null,undefined,false,NaN,数字0和空string''。

假设variablesjsVar是一个布尔值,并且当jsVar为true时我们想调用proceed()方法,我们可以做下面的检查。

 if (jsVar && jsVar == true) proceed(); 

上面的代码片段首先检查jsVar已经定义,然后检查它的值是否为真。 if条件只有满足两个条件才能满足。

如果jsVar不是布尔值,那么我们可以在上面的代码中用合适的检查代替jsVar == true。