测试是否在javascript中定义了变量?

测试是否在javascript中定义了变量?,javascript,Javascript,如何测试是否定义了变量 if //variable is defined //do this else //do this 你可以用这样的东西 if (typeof varname !== 'undefined') { // do this } else { // do that } 请在此处查找更多说明: 您只需检查类型即可 if(typeof yourVar !== "undefined"){ alert("defined"); } else{

如何测试是否定义了变量

if //variable is defined
    //do this
else
    //do this

你可以用这样的东西

if (typeof varname !== 'undefined') {
    // do this
} else {   
    // do that
}
请在此处查找更多说明:


您只需检查类型即可

if(typeof yourVar !== "undefined"){
  alert("defined");
}
else{
  alert("undefined");
}

使用中的
操作符

'myVar' in window; // for global variables only
typeof
如果

  • 它还没有定义
  • 已定义且值
    未定义
    ,或
  • 它已定义,但尚未初始化
  • 下面的例子将说明第二点和第三点

    // defined, but not initialized
    var myVar;
    typeof myVar; // undefined
    
    // defined, and initialized to undefined
    var myVar = undefined;
    typeof myVar; // undefined
    

    只能在全局变量的特殊情况下在窗口中使用,因为它们也是全局对象的属性。局部变量没有这样的可访问变量对象。假设存在一个窗口对象对于浏览器来说可能是合理的,但通常不一定是正确的。@RobG-它不必是
    window
    或全局对象。这里可以使用任何对象。您提出了一个很好的观点,即本地定义的变量在这里不可访问。我很感兴趣的是,是否有一种方法可以仅根据我掌握的第一个标准来确定局部变量的不确定性。如果你谈论的是变量和范围,那么你只能区分全局变量(因为它们是全局对象的属性)和其他变量。在嵌套函数中,由于无法访问相关的变量对象,因此无法判断标识符是本地函数变量还是外部函数变量。对象属性解析是另一回事。@RobG这仍然是最好的答案,因为测试变量是否仅等于未定义并不意味着它是未定义的。。。但是变量可能存在。@LoïcFaure Lacroix这里没有好的答案,无法判断局部变量是否“存在”。使用!==为了严格比较和更好的性能。@AmericanYak在类型测试中,解析算法是相同的,因为两个值具有相同的类型(字符串),那么更好的性能从何而来?当
    typeof null
    对象时,这会失败
    
    // defined, but not initialized
    var myVar;
    typeof myVar; // undefined
    
    // defined, and initialized to undefined
    var myVar = undefined;
    typeof myVar; // undefined