这两个代码有什么区别?
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!');
}
}
它们对我来说都是一样的,但只有第一个做了我想要的,而第二个却继续显示警告信息。
答案 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
}
}
它们在功能上是相同的。因此,对于第一个,您可以根据需要根据“出错”轻松自定义警报。