Javascript 如果变量不存在,如何执行语句?

Javascript 如果变量不存在,如何执行语句?,javascript,ajax,Javascript,Ajax,我正在进行一个项目,我必须检查变量是否存在或不为null,然后我必须比较两个值(如果变量存在)并检查差值是否不大于10。如果大于10,我必须提醒消息,如果不是,我必须继续我的ajax调用。所以我的问题是如何将所有内容放在一个语句中,这样我就可以只使用一次ajax调用。下面是我的代码示例: function myFunction(){ var var1 = document.getElementById("myvar1").value; var var2 = document.g

我正在进行一个项目,我必须检查变量是否存在或不为null,然后我必须比较两个值(如果变量存在)并检查差值是否不大于10。如果大于10,我必须提醒消息,如果不是,我必须继续我的ajax调用。所以我的问题是如何将所有内容放在一个语句中,这样我就可以只使用一次ajax调用。下面是我的代码示例:

function myFunction(){
    var var1 = document.getElementById("myvar1").value; 
    var var2 = document.getElementById("mayvar2").value;
    var var3 = document.getElementById("myvar3").value;

    if ((var1.length != 0 && var2.length != 0)&&((dateDiff(var1,var2) > 10 && var3 == ''))) {
        alert('It is greater than 10!');
    }else{
        //Ajax call 
    }
} 
这是我当前的函数,问题出现了,因为变量1在特定情况下显示在页面上(我不想详细说明)。在这种情况下,如果我没有var1,我会得到一个错误,我的var1是
未定义的
,这是有意义的,因为它是在if语句上面定义的。所以我的问题是什么是这个问题的最佳解决方案?我试图在现有if之上再添加一条if语句,以检查变量是否存在,但在这种情况下,我需要两次ajax调用,如下所示:

function myFunction(){
    if (document.getElementById("myvar1")) {
        var var1 = document.getElementById("myvar1").value; 
        var var2 = document.getElementById("mayvar2").value;
        var var3 = document.getElementById("myvar3").value;

       if((var1.length != 0 && var2.length != 0)&&((dateDiff(var1,var2) > 10 && var3 == ''))){
          alert('It is greater than 10!');
       }else{
          //Ajax call
       }
    }else{
       //Ajax call  
    }
}
var var1 = document.getElementById("myvar1") && document.getElementById("myvar1").value || ""

function myFunction(){
    var var1 = document.getElementById("myvar1") && document.getElementById("myvar1").value || ""; 
    var var2 = document.getElementById("mayvar2").value;
    var var3 = document.getElementById("myvar3").value;

    if ((var1.length != 0 && var2.length != 0)&&((dateDiff(var1,var2) > 10 && var3 == ''))) {
        alert('It is greater than 10!');
    }else{
        //Ajax call 
    }
}

我认为不应该有超过一个Ajax调用,如果有人可以帮助解决这个问题,请让我知道。提前感谢。

只需像这样创建var1:

function myFunction(){
    if (document.getElementById("myvar1")) {
        var var1 = document.getElementById("myvar1").value; 
        var var2 = document.getElementById("mayvar2").value;
        var var3 = document.getElementById("myvar3").value;

       if((var1.length != 0 && var2.length != 0)&&((dateDiff(var1,var2) > 10 && var3 == ''))){
          alert('It is greater than 10!');
       }else{
          //Ajax call
       }
    }else{
       //Ajax call  
    }
}
var var1 = document.getElementById("myvar1") && document.getElementById("myvar1").value || ""

function myFunction(){
    var var1 = document.getElementById("myvar1") && document.getElementById("myvar1").value || ""; 
    var var2 = document.getElementById("mayvar2").value;
    var var3 = document.getElementById("myvar3").value;

    if ((var1.length != 0 && var2.length != 0)&&((dateDiff(var1,var2) > 10 && var3 == ''))) {
        alert('It is greater than 10!');
    }else{
        //Ajax call 
    }
}

只需像这样创建var1:

function myFunction(){
    if (document.getElementById("myvar1")) {
        var var1 = document.getElementById("myvar1").value; 
        var var2 = document.getElementById("mayvar2").value;
        var var3 = document.getElementById("myvar3").value;

       if((var1.length != 0 && var2.length != 0)&&((dateDiff(var1,var2) > 10 && var3 == ''))){
          alert('It is greater than 10!');
       }else{
          //Ajax call
       }
    }else{
       //Ajax call  
    }
}
var var1 = document.getElementById("myvar1") && document.getElementById("myvar1").value || ""

function myFunction(){
    var var1 = document.getElementById("myvar1") && document.getElementById("myvar1").value || ""; 
    var var2 = document.getElementById("mayvar2").value;
    var var3 = document.getElementById("myvar3").value;

    if ((var1.length != 0 && var2.length != 0)&&((dateDiff(var1,var2) > 10 && var3 == ''))) {
        alert('It is greater than 10!');
    }else{
        //Ajax call 
    }
}

@Waldemarlce这个很好用!有没有其他方法可以防止这个问题?任何其他方式,如.length>0或“undefined”对我都不起作用。嗯。。。不是真的。在我看来,这是一种理想的“便携”跨浏览器兼容方式,适用于所有浏览器,甚至旧浏览器。@Waldemarlce感谢您的帮助@Waldemarlce这个很好用!有没有其他方法可以防止这个问题?任何其他方式,如.length>0或“undefined”对我都不起作用。嗯。。。不是真的。在我看来,这是一种理想的“便携”跨浏览器兼容方式,适用于所有浏览器,甚至旧浏览器。@Waldemarlce感谢您的帮助!