将if语句转换为switch / case

时间:2017-03-24 03:39:04

标签: javascript

如何将此if语句转换为switch case?我试图像这样声明变量:

myAge = parseFloat(prompt("Enter you age: "));

if(myAge <18) {
  alert("You cant not vote at this " +myAge);
} else if (myAge >18) {
  alert("Vote wisely, you are " +myAge "years old!");
} else {
  alert("Invalid age");
}

3 个答案:

答案 0 :(得分:1)

回答你的“如何将其转换为切换”问题,你可以实现一个功能,使得 C风格的比较并返回-1,0或1 作为比较的结果。

以下示例使用setInterval来模拟多个不同的案例。
这仅用于示例。

function compareTo(a, b) {
  if (a < b)
    return -1;

  if (a > b)
    return 1;

  return 0;
}


function EvaluateAge() {
  // Generate a random age between 10 and 40
  var myAge = Math.floor((Math.random() * 30) + 10);
  switch (compareTo(myAge, 18)) {
    case -1:
      console.log(myAge, " less than 18");
      break;

    case 0:
      console.log(myAge, "   equal to 18");
      break;

    case 1:
      console.log(myAge, "more than 18");
      break;
  }
}

// Example only
setInterval(EvaluateAge, 1000);

另一种方法是使用JS switch能力在switch-condition 中使用 true

var myAge = 16;
switch (true) {
  case myAge < 18:
    console.log("less than 18");
    break;

  case myAge === 18:
    console.log("equal to 18");
    break;

  case myAge > 18:
    console.log("more than 18");
    break;
}

然而,它看起来不太好,避免这种用法是个好主意。

实际上,您的if看起来不错,并且您不需要将其转换为switch - 它不会提高代码的可读性/可维护性。

答案 1 :(得分:1)

如果年龄

如果年龄&gt; = 18,你可以在这个年龄投票。

其他无效年龄。

&#13;
&#13;
var myAge = parseFloat(prompt("Enter you age: "));
switch (true) {
  case myAge < 18:
    alert("You cant not vote at this " + myAge);
    break;

  case myAge >= 18:
    alert("Vote wisely, you are " + myAge + " years old!");
    break;

  default:
    alert("Invalid age");
}
&#13;
&#13;
&#13;

答案 2 :(得分:0)

不确定你为什么要这样做而不是简洁的if语句,但你可以这样:

&#13;
&#13;
var myAge = parseFloat(prompt("Enter you age: "));
switch (true) {
  case myAge < 18:
    alert("You cant not vote at this " + myAge);
    break;

  case myAge > 18:
    alert("Vote wisely, you are " + myAge + " years old!");
    break;

  default:
    alert("Invalid age");
}
&#13;
&#13;
&#13;

请注意,您没有捕获18的值,我只是假设它是有意的但值得指出给您,而且,您错过了+连接您的第二个警告所以你原来的例子甚至都没有执行过。