javascript switch语句的用法

发布时间:2019-09-02编辑:脚本学堂
本文详细介绍了javascript中有关switch语句的相关知识,通过具体的实例来学习switch语句的用法,有需要的朋友参考下。

学习javascript编程,switch语句是必须掌握的。
switch语句与if语句的关系最为密切,而且也是在其它语言中普遍使用的一种流程控制语句。

之前曾介绍过一篇:Javascript 分支语句,大家可以参考下。

ECMAScript中switch语句的语法与其他基于C的语言非常接近,如下所示:
 

复制代码 代码示例:
switch (expression) {
case value:
    statement
    break;
case value:
    statement
    break;
case value:
    statement
    break;
case value:
    statement
    break;
default:
    statement
}

switch语句中的每一种情形(case)的含义是”如果表达式等于这个值(value),则执行后面的语句(statement)“.而break关键字会导致代码执行流跳出switch语句。如果省略了break关键字,就会导致执行完当前case后,继续执行下一个case。最后的default关键字则用于在表达式不匹配前面任何一种情形的时候,执行机动代码(因此,也相当于一个else语句)。
从根本上讲,switch语句就是为了让开发人员免于编写像下面这样的代码:
 

复制代码 代码示例:
var i = 25;
if (i == 25) {
    alert("25")
} else if (i == 35) {
    alert("35")
} else if (i == 45) {
    alert("45")
} else {
    alert("Other");
}

而与此等价的switch语句如下所示:
 

复制代码 代码示例:
var i = 25;
switch (i) {
case 25:
    alert("25");
    break;
case 35:
    alert("35");
    break;
case 45:
    alert("45")
    break;
default:
    alert("Other");
}

通过为每个case后面都添加一个break语句,就可以避免同时执行多个case代码的情况。
假如确实需要混合几种情形,不要忘了在代码中添加注释,说明你是有意省略了break关键字,如下所示:
 

复制代码 代码示例:
var i = 25
switch (i) {
case 25:    //合并两种情形
case 35:
    alert("25 or 35");
    break;
case 45:
    alert("45");
    break;
default:
    alert("Other");
}

虽然ECMAScript中的switch语句借鉴自其它语言,但这个语句也有自己的特色。首先,可以在switch语句中使用任何数据类型(在很多其它语言中只能使用数值),无论是字符串,还是对象都没有问题。其次,每个case的值不一定是常量,甚至是表达式。

例子:
 

复制代码 代码示例:
switch ("hello world") {
case "hello" + " world":
    alert("Greeting was found.");
    break;
case "goodbye":
    alert("Closing was found.");
    break;
default:
    alert("Unexpected message was found.");
}

在这个例子中,switch语句使用的就是字符串。其中,第一种情形实际上是一个对字符串拼接操作求值的表达式。由于这个字符串拼接表达式的结果与switch的参数相等,因此结果就会显示“Greeting was found.”。而且,使用表达式作为case值还可以实现下列操作:
 

复制代码 代码示例:
var num = 25;
switch (true) {
case num < 0:
    alert("Less than 0.");
    break;
case num >= 0 && num <= 10:
    alert("Between 0 and 10.");
    break;
case num > 10 && num <= 20:
    alert("Between 10 and 20.");
default:
    alert("More than 20.");
}

此例首先在switch语句外声明了变量num。
而之所以给switch语句传递表达式true,是因为每个case值都可以返回一个布尔值。
这样,每个case 按照顺序被求值,直到找到匹配的值或者遇到default语句为止(这正是这个例子的最终结果)。