switch语句

switch语句与if语句的关系最为密切,switch语句的语法如下:

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语句就是为了让开发人员免于编写像下面这样的代码:

if(i==25){
alert("25");
}else if(i==35){
alert("35");
}else if(i==45){
alert("45")
}else{
alert("other");
}

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

switch(i){
case 25:
         alert("25");
         break;
case 35:
         alert("35");
         break;
case 45:
         alert("45");
         break;
default:
         alert("other");
}

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

switch(i){
case 25:
//合并两种情形
case 35:
         alert("25 or 35");
         break;
case 45:
         alert("45");
         break;
default:
         alert("other");
}

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");
       break;
 default :
       alert("more than 20");
 }

这个例子中,首先在switch语句外面声明了变量num,而之所以给switch语句传递表达式true,是因为每个case值都可以返回一个布尔值。这样每个case按照顺序被求值,直至找到匹配的值,或者遇到default语句为止。
(switch语句在比较值时使用的是全等操作符,因此不会发生类型转换,例如:字符串“10”不等于数字10)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值