Javascript 如果elseif else未按预期工作
我注意到,如果在elseif/else语句上方有多个if语句,那么最后一个if、else if和else似乎形成了自己的逻辑块,而忽略了第一个if: **期望输出**Javascript 如果elseif else未按预期工作,javascript,if-statement,Javascript,If Statement,我注意到,如果在elseif/else语句上方有多个if语句,那么最后一个if、else if和else似乎形成了自己的逻辑块,而忽略了第一个if: **期望输出** "first if 1" "second if 2" "third if 3" "else if 4" "else 5" 这里发生了什么,我该如何解决 看起来您缺少了几个else关键字 你的密码是: if (i === 1) { a = 'first if'; console.log(a + " " + i);
"first if 1"
"second if 2"
"third if 3"
"else if 4"
"else 5"
这里发生了什么,我该如何解决 看起来您缺少了几个
else
关键字
你的密码是:
if (i === 1) {
a = 'first if';
console.log(a + " " + i);
}
if (i === 2) {
a = 'second if'
console.log(a + " " + i);
}
if (i === 3) {
...
应该是:
if (i === 1) {
a = 'first if';
console.log(a + " " + i);
} else // <=== NEW "else"
if (i === 2) {
a = 'second if'
console.log(a + " " + i);
} else // <=== NEW "else"
if (i === 3) {
...
if(i==1){
a=‘第一个如果’;
控制台日志(a+“”+i);
}else//Description
您错过了i===2
和i===3
的else if
语句,因此这变成了3个if语句部分,而没有添加下面的else if
语句
三个if语句块:
第一次检查:
if (i === 1) {
a = 'first if';
console.log(a + " " + i);
}
第二次检查:
第三个检查:
这意味着当i
等于1时,将由每个if块检查,并将命中第一个if块和第三个块的else
如果if
更改为else if
var a='';
对于(i=1;i您有三个单独的检查:
一,
二,
三,
这意味着如果i
为1
或2
,则它满足第三次检查中的else
最简单的解决方案(虽然不是最干净的)是将第二个和第三个if
转换为else if
。最干净的解决方案是使用开关,在这种情况下,最好使用开关:
console.log((function(){
switch(i){
case 1:
return "its one";
break;
case 2:
return " its two";
break;
default:
return "its sth else";
break;
}})(),i);
与此相反,您也可以在代码中简单地执行a=“its sth other”之类的操作。此外,我将把console.log放在最后一个if后面,因为它非常重复。在那里,else是无用的,而且在最后一个if中,顺便说一句,您可能需要使用开关
if (i === 4) {
a = 'else if';
console.log(a + " " + i);
}
a = 'else';
console.log(a + " " + i);
您已经编写了2个if
-语句和1个if
/else if
/else
语句:
一,
二,
三,
代码执行进入每个if语句,这意味着当i
不是3
时,所有迭代都会执行最后的else
子句。它的作用是什么?您想要的输出是什么?这是因为在第一个if上没有else ifif(a){}if(b){}
与if(e){}else if(b){}
不同,无论前面的if是否为真,都将始终检查顺序的if。if/elseif仅在if条件为假时检查elseif。如果elseif else按预期工作,则可以使用开关块而不是i实际。
if (i === 2) {
a = 'second if'
console.log(a + " " + i);
}
if (i === 3) {
a = 'third if';
console.log(a + " " + i);
}
else if (i === 4) {
a = 'else if';
console.log(a + " " + i);
}
else {
a = 'else';
console.log(a + " " + i);
}
if (i === 1) {
a = 'first if';
console.log(a + " " + i);
}
if (i === 2) {
a = 'second if'
console.log(a + " " + i);
}
if (i === 3) {
a = 'third if';
console.log(a + " " + i);
}
else if (i === 4) {
a = 'else if';
console.log(a + " " + i);
}
else {
a = 'else';
console.log(a + " " + i);
}
console.log((function(){
switch(i){
case 1:
return "its one";
break;
case 2:
return " its two";
break;
default:
return "its sth else";
break;
}})(),i);
if (i === 4) {
a = 'else if';
console.log(a + " " + i);
}
a = 'else';
console.log(a + " " + i);
if (i === 1) {
a = 'first if';
console.log(a + " " + i);
}
if (i === 2) {
a = 'second if'
console.log(a + " " + i);
}
if (i === 3) {
a = 'third if';
console.log(a + " " + i);
}
else if (i === 4) {
a = 'else if';
console.log(a + " " + i);
}
else {
a = 'else';
console.log(a + " " + i);
}