Javascript if语句和&&操作员差异

时间:2013-08-06 19:54:35

标签: javascript if-statement operator-keyword

这两个代码有什么区别?

ONE:如果xmlhttp.readystate == 4,那么如果xmlHttp.status == 200,那么执行代码

function handleServerResponse(){
   if(xmlHttp.readyState==4){
            if(xmlHttp.status==200){
               xmlResponse = xmlHttp.responseXML;
               xmlDocumentElement = xmlResponse.documentElement;
               message = xmlDocumentElement.firstChild.data;
               document.getElementById('underInput').innerHTML = message;
               setTimeout('process()', 1000);
         }else{
            alert('Something went wrong!');
            }
      }
}

TWO:如果xmlHttp.readtState == 4并且xmlHttp.Status == 200则执行代码

function handleSxerverResponse(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
    xmlResponse = xmlHttp.responseXML;
    xmlDocumentElement = xmlResponse.documnetElement;
    message = xmlDocumentElement.firstChild.data;
    document.getElementById('underInput').innerHTML = message;
    setTimeout('process()', 1000);
}else{
    alert('Something went wrong!');
}   

}

它们对我来说都是一样的,但只有第一个做了我想要的,而第二个却继续显示警告信息。

3 个答案:

答案 0 :(得分:1)

在就绪状态为4之前,它是3.然后

  • 在第一种情况下,外部测试会阻止alert

  • 在第二种情况下,else子句适用,因此执行alert

答案 1 :(得分:0)

假设第一部分是假的。

then if的情况下,您永远不会进入该区块,因此您将永远不会在第二个if语句中看到警报。如果您使用&&,则如果其中一个为假,则会输入else块。

答案 2 :(得分:0)

唯一的区别是,在第一个中,如果readyState不是4,您将看不到警报。

如果您将第一个转换为此:

function handleServerResponse() {
    if (xmlHttp.readyState == 4) {
        if (xmlHttp.status == 200) {
            xmlResponse = xmlHttp.responseXML;
            xmlDocumentElement = xmlResponse.documentElement;
            message = xmlDocumentElement.firstChild.data;
            document.getElementById('underInput').innerHTML = message;
            setTimeout('process()', 1000);
        } else {
            alert('Something went wrong!');
        }
    } else {
        alert('Something went wrong!'); //added this
    }
}

它们在功能上是相同的。因此,对于第一个,您可以根据需要根据“出错”轻松自定义警报。