switch条件分支

我们很少会编写如下所示的代码。

  1. if (x == "value1") action1();
  2. else if (x == "value2") action2();
  3. else if (x == "value3") action3();
  4. else defaultAction();

有一种名为switch的结构,为了以更直接的方式表达这种“分发”。 不幸的是,JavaScript 为此所使用的语法(它从 C/Java 语言中继承而来)有些笨拙 - if语句链看起来可能更好。 这里是一个例子:

  1. switch (prompt("What is the weather like?")) {
  2. case "rainy":
  3. console.log("Remember to bring an umbrella.");
  4. break;
  5. case "sunny":
  6. console.log("Dress lightly.");
  7. case "cloudy":
  8. console.log("Go outside.");
  9. break;
  10. default:
  11. console.log("Unknown weather type!");
  12. break;
  13. }

你可以在switch打开的块内放置任意数量的case标签。 程序会在向switch提供的值的对应标签处开始执行,或者如果没有找到匹配值,则在default处开始。 甚至跨越了其他标签,它也会继续执行,直到达到了break声明。 在某些情况下,例如在示例中的"sunny"的情况下,这可以用来在不同情况下共享一些代码(它建议在晴天和多云天气外出)。 但要小心 - 很容易忘记这样的break,这会导致程序执行你不想执行的代码。