如何在javascript中处理’undefined’

How to handle 'undefined' in javascript

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Detecting an undefined object property in JavaScript

从下面的javascript示例

1
2
3
4
5
6
7
 try {
    if(jsVar) {
     proceed();
      }
 }catch(e){
      alert(e);
 }

这个jsvar在另一个js fine中声明并用首字母签名。

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

处理这个未定义错误的最佳方法是什么?


你可以用

1
2
3
if (typeof(jsVar) == 'undefined') {
  ...
}


与JavaScript的情况一样,有多种方法可以做到这一点:

1
2
3
typeof foo !== 'undefined'
window.foo !== undefined
'foo' in window

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


在javascript中,以下值将导致if条件失败,并且不会执行其语句:空、未定义、假、NaN、数字0和空字符串""。

假设变量jsvar是一个布尔值,并且我们希望在jsvar为true时调用proceed()方法,我们可以执行以下检查。

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

上面的代码片段首先检查JSvar是否已定义,然后检查其值是否为真。只有当两个条件都满足时,才会满足if条件。

如果jsvar不是布尔值,那么我们可以在上面的代码中用适当的签入代替jsvar==true。