Ruby的Case语句与Javascript的Switch语句

时间:2017-07-27 21:26:34

标签: javascript ruby switch-statement conditional case

我刚刚学习了Javascript的Switch语句,并认为它的工作方式与Ruby的Case语句相同。但是它略有不同,我不明白为什么Switch语句将继续打印出其余的行。请参阅下面的比较示例:

    option = 2
    case option
    when 1 
      print "You selected option 1."
    when 2
      print "You selected option 2."
    when 3
      print "You selected option 3."
    when 4
      print "You selected option 4."
    end

Ruby中的上述case语句只会打印出来:You selected option 2.

但是,当它转换为Javascript的Switch语句时:

    var option = 2
    switch (option) {
      case 1:
        console.log("You selected option 1.");
      case 2:
        console.log("You selected option 2.");
      case 3:
        console.log("You selected option 3.");
      case 4:
        console.log("You selected option 4.");
    }

上面的Switch语句将打印

    You selected option 2.
    You selected option 3.
    You selected option 4.

我必须在每个案例之后在Switch语句中放置break才能使其正常工作。

有人可以解释一下原因吗?在Javascript中有更简单的方法或方法吗?

1 个答案:

答案 0 :(得分:3)

JavaScript遵循C传统,要求明确的break突破switch。 C ++和Java在这方面是相同的,以及(我确定)无数其他C衍生物。

退出case

switch (something) {
  case value:
    console.log("whatever");
    break;
  case other:
    console.log("other");
    break;
}

没有break,执行"落在"到后续的case块。