Javascript中的switch语句

Javascript中的switch语句

switch语句与if语句的关系最密切,而且也是在其他语言中最被普遍使用的一种流程控制型语句。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语句)。

if (i == 25) {
    console.log('25')
} else if (i == 35) {
    console.log('35')
} else if (i == 45) {
    console.log('45')
} else if (i == 55) {
    console.log('55')
} else if (i == 65) {
    console.log('65')
} else {
    console.log('100')
}

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

switch (i) {
    case 25:
        console.log('25');
        break;
    case 35:
        console.log('35');
        break;
    case 45:
        console.log('45');
        break;
    case 55:
        console.log('55');
        break;
    case 35:
        console.log('35');
        break;
    default:
        console.log('100')
}

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

switch (i) {
    case 25:
    	/*合并两种情形*/
    case 35:
        console.log('35');
        break;
    case 45:
        console.log('45');
        break;
    case 55:
        console.log('55');
        break;
    case 35:
        console.log('35');
        break;
    default:
        console.log('100')
}

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

switch ('hello world') {
    case 'hello ' + 'world':
        console.log('Greeting was found.');
        break;
    case 'goodbye':
        console.log('Closing was found.');
        break;
    default:
        console.log('Unexpected message was found')
        break;
}

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

var num = 30;

switch (true) {
    case num < 0:
        console.log('less than 0');
        break;
    case 0 <= num && num < 10:
        console.log('between 0 and 10');
        break;
    case 10 <= num && num < 20:
        console.log('between 10 and 20');
        break;
    case 20 <= num && num <= 25:
        console.log('between 20 and 25');
        break;
    default:
        console.log('more than 25')
        break;
}

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

ATTENTION:switch语句在比较时使用的是全等操作符,因此不会发生类型转换(例如,字符串“10”不等于数值10)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值