检查Javascript中是否存在变量的最佳方法是?

时间:2016-12-07 17:53:56

标签: javascript variables global-variables undefined

嗯,我的问题很明显,

示例:

使用默认值a定义undefined

var a;

如果我想检查a var是否存在,我会尝试:

但在这种情况下,a确实存在且a值为undefined,但在boolean evaluation中这是false



var a; // default value is 'undefined'
if (a) {
    alert('a exists');
} else {
    alert("a don't exists")
}




我也可以尝试使用以下示例:但此示例会生成错误。



// var a;
// a is not defined
if (a) {
    alert('a exists');
} else {
    alert("a don't exists")
}




在此示例中,我尝试使用typeof。但默认情况下,a的值定义为undefined



var a;
if (typeof a != 'undefined') {
    alert('a exists');
} else {
    alert("a don't exists")
}




在这个例子中



console.log ('var a exists:', window.hasOwnProperty('a'));




验证变量是否实际存在的最佳方法是什么?为什么?

感谢。

1 个答案:

答案 0 :(得分:3)

JS中有三种不同的可能性。

  1. 变量' a'根本没有宣布;
  2. 变量' a'声明,但未分配(未定义)。例如:var a;
  3. 变量' a'声明,但分配为空或null。 (可能的情况,如果变量试图从后端获取值)
    例如: var a=null; var a='';
  4. 如果您期望变量中的值不是0或false,那么最好使用以下条件。当然,这完全取决于您的需求,如果您不确定变量或对象值,请始终将它们包含在try&抓住了。

    
    
    //var a;
    //var a=null;
    //var a='';
    //var a=0;
    //var a='value';
    
    if (typeof a != "undefined" && a) {
      alert("a is defined AND a is TRUE value");
    } else {
      alert("a not exist OR a is a FALSE value");
    }