如何在javascript中处理'undefined'

时间:2009-12-31 09:49:25

标签: javascript

  

可能重复:
  Detecting an undefined object property in JavaScript

来自以下javascript示例

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

这个jsVar在另一个js罚款中声明并初始化。

问题是,当代码在执行其他文件(声明和启动的文件)之前执行时,代码会抛出未定义的错误。这就是为什么它被try和catch包围着。

处理这个未定义的错误比尝试catch更好吗?

3 个答案:

答案 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。