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...