switch
条件分支
我们很少会编写如下所示的代码。
if (x == "value1") action1();
else if (x == "value2") action2();
else if (x == "value3") action3();
else defaultAction();
有一种名为switch
的结构,为了以更直接的方式表达这种“分发”。 不幸的是,JavaScript 为此所使用的语法(它从 C/Java 语言中继承而来)有些笨拙 - if
语句链看起来可能更好。 这里是一个例子:
switch (prompt("What is the weather like?")) {
case "rainy":
console.log("Remember to bring an umbrella.");
break;
case "sunny":
console.log("Dress lightly.");
case "cloudy":
console.log("Go outside.");
break;
default:
console.log("Unknown weather type!");
break;
}
你可以在switch
打开的块内放置任意数量的case
标签。 程序会在向switch
提供的值的对应标签处开始执行,或者如果没有找到匹配值,则在default
处开始。 甚至跨越了其他标签,它也会继续执行,直到达到了break
声明。 在某些情况下,例如在示例中的"sunny"
的情况下,这可以用来在不同情况下共享一些代码(它建议在晴天和多云天气外出)。 但要小心 - 很容易忘记这样的break
,这会导致程序执行你不想执行的代码。