JavaScript switch case


你可以使用多个if...else...if语句,就像前一章那样,来执行一个多路分支。然而,这并不总是最好的解决方案,特别是当所有的分支都依赖于一个变量的值时。

从JavaScript 1.2开始,你可以使用switch语句来处理这种情况,而且它比重复的if...else if语句更有效。

语法


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语句中起主要作用。请尝试使用不带任何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 />");
                    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...