JavaScript - 切换大小写


您可以使用多个if...else...if语句(如上一章所示)来执行多路分支。然而,这并不总是最好的解决方案,特别是当所有分支都依赖于单个变量的值时。

从 JavaScript 1.2 开始,您可以使用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语句。

例子

尝试以下示例来实现 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>

输出

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>

输出

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