当前位置:首页 > 行业动态 > 正文

精讲JavaScript的switch语句

JavaScript的switch语句用于根据不同的条件执行不同的代码块。switch语句评估一个表达式,将表达式的值与case子句匹配,并执行与该情况相关联的语句。如果没有匹配项,则执行default子句中的语句。

JavaScript中的switch语句是一种多分支选择结构,它根据表达式的值来选择执行相应的代码块,switch语句的语法如下:

精讲JavaScript的switch语句  第1张

switch (expression) {
  case value1:
    // 当expression等于value1时,执行这里的代码
    break;
  case value2:
    // 当expression等于value2时,执行这里的代码
    break;
  // ...可以有任意数量的case语句
  default:
    // 当expression与所有case值都不匹配时,执行这里的代码
}

下面我们详细讲解一下switch语句的各个部分:

1、expression:这是需要进行比较的表达式,它的值将与每个case后面的值进行比较,如果找到了一个相等的值,那么就执行该case后面的代码块,直到遇到break语句或者switch语句结束。

2、case value:这是一系列用于比较的值,当expression的值等于某个case后面的值时,就会执行该case后面的代码块,注意,case后面的值是按照顺序进行比较的,一旦找到相等的值,就会跳出整个switch语句。

3、break:这是一个可选的语句,用于跳出switch语句,如果没有break语句,那么程序会继续执行下一个case语句,直到遇到break或者switch语句结束。

4、default:这是一个可选的语句,用于处理所有case语句都不匹配的情况,当expression的值与所有case后面的值都不相等时,就会执行default后面的代码块。

下面我们通过一个简单的例子来演示switch语句的使用:

var day = new Date().getDay();
var msg;
switch (day) {
  case 0:
    msg = "星期日";
    break;
  case 1:
    msg = "星期一";
    break;
  case 2:
    msg = "星期二";
    break;
  case 3:
    msg = "星期三";
    break;
  case 4:
    msg = "星期四";
    break;
  case 5:
    msg = "星期五";
    break;
  case 6:
  case 7:
  default:
    msg = "星期六";
}
console.log(msg); // 根据当前日期输出对应的星期几

在这个例子中,我们首先获取了当前日期的星期数(0表示星期日,1表示星期一,以此类推),然后使用switch语句根据这个数值来输出对应的中文星期几,由于JavaScript中的switch语句是按顺序进行比较的,所以即使在case后面添加了default语句,也不会影响到前面的case语句,这就是JavaScript中switch语句的一个特点。

下面我们来看一些与switch语句相关的问题及解答:

问题1:switch语句中的break语句有什么作用?如何使用?

答案1:break语句用于跳出switch语句,当程序执行到break语句时,会立即跳出switch语句,不再执行后续的case语句。

for (var i = 0; i < 3; i++) {
  switch (i) {
  case 0:
    console.log("i is zero");
    i++; // 这里不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,i已经被加到了3,不再满足条件0<i<3了。
    i++; // 这里也不会执行,因为遇到了break语句,
0