JavaScript Switch-Case语句
Posted by 撒得一地 on 2016年5月3日 in JavaScript教程
你可以使用多个的 if…else…if语句,来实现程序逻辑的多路分支。然而,这并非总是最好的解决方案,尤其是当所有的分支取决于单个变量的值的时候。
从 JavaScript 1.2 开始,你可以使用 switch 语句来处理这种情况下,而且,使用 switch 语句比重复使用 if…else…if 语句的效率更高。
流程图
下面的流程图解释了 switch-case 语句的工作流程。
语法
Switch 语句的目标是首先提供一个表达式,然后再基于表达式可能的值来执行不同的语句。翻译器检查表达式的值,然后对每种情况进行匹配,直到找到一个匹配。如果什么都不匹配,将使用默认情况。
switch (expression)
{
case condition 1: statement(s)
break;
case condition 2: statement(s)
break;
...
case condition n: statement(s)
break;
default: statement(s)
}
break 语句用来指示结束某一情况下的逻辑语句。如果 break 被省略,解释器会继续执行后面情况下的每个语句。
我们将在循环章节介绍 break 语句。
示例
请尝试执行下面的 switch-case 语句。
<html>
<body>
<script type="text/javascript">
<!--
var grade='A';
document.write("Entering switch block<br />");
switch (grade)
{
case 'A': document.write("Good job<br />");
break;
case 'B': document.write("Pretty good<br />");
break;
case 'C': document.write("Passed<br />");
break;
case 'D': document.write("Not so good<br />");
break;
case 'F': document.write("Failed<br />");
break;
default: document.write("Unknown grade<br />")
}
document.write("Exiting switch block");
//-->
</script>
<p>Set the variable to different value and then try...</p>
</body>
</html>
Output Entering switch block Good job Exiting switch block Set the variable to different value and then try...
break 语句在 switch-case 语句中发挥者重大的作用。试试下面在 switch-case 语法下没有使用任何 break 语句的代码。
<html>
<body>
<script type="text/javascript">
<!--
var grade='A';
document.write("Entering switch block<br />");
switch (grade)
{
case 'A': document.write("Good job<br />");
case 'B': document.write("Pretty good<br />");
case 'C': document.write("Passed<br />");
case 'D': document.write("Not so good<br />");
case 'F': document.write("Failed<br />");
default: document.write("Unknown grade<br />")
}
document.write("Exiting switch block");
//-->
</script>
<p>Set the variable to different value and then try...</p>
</body>
</html>
Output Entering switch block Good job Pretty good Passed Not so good Failed Unknown grade Exiting switch block Set the variable to different value and then try...