if语句确实有效时为什么切换不起作用

时间:2016-07-13 10:29:57

标签: javascript

在以下简单的脚本中,我需要一些关于切换错误的帮助。

var pp = 1;
switch (pp) {
    case pp == 1:
        var p = "A";
        break;
    default:
        var p = "F";
        break;
}

document.write(p); //display "F" ---??? it should be "A".

if (pp == 1) document.write("A"); //display "A"

4 个答案:

答案 0 :(得分:4)

您正在以错误的方式使用switch - case语法,

  switch(pp){
      case 1  : var p="A"; break;
      default : var p="F"; break;
  }

您也可以编写如下代码,

var p = pp ? "A" : "F"; //And this code is valid for your given data only.

答案 1 :(得分:1)

您正在重新评估pp的价值。

应该是

case 1:
....
break;

答案 2 :(得分:0)

Javascript Switch-cause应遵循此格式

switch(expression) {
case n:
    code block
    break;
case n:
    code block
    break;
default:
    default code block
}

所以,案例pp == 1的格式错误。它应该正确如下

<script>
          var pp=1;
          switch(pp){
              case 1  : var p="A"; break;
              default : var p="F"; break;
          }
          document.write(p);

          if (pp==1) document.write("A");

   </script>

答案 3 :(得分:0)

如果您确实需要对每个案例进行重新评估,可以将true作为表达式传递给switch语句:

var p,
    pp = 1;

switch (true) {
    case pp === 1:
        p = 'A';
        break;
    default:
        p = 'F';
}

console.log(p); // p should be "A"

if (pp === 1) {
    console.log('A'); // display "A"
}