Javascript 如果elseif else未按预期工作

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);

我注意到,如果在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);
  }
  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);
    }