首页
学习
活动
专区
圈层
工具
发布

js switch case

switch 语句在 JavaScript 中是一种多分支选择结构,它允许根据一个表达式的值来执行不同的代码块。其基本语法结构如下:

代码语言:txt
复制
switch (expression) {
  case value1:
    // 当 expression 等于 value1 时执行的代码
    break;
  case value2:
    // 当 expression 等于 value2 时执行的代码
    break;
  // ...
  default:
    // 当 expression 不匹配任何 case 时执行的代码
}

基础概念:

  • expression 是要被评估的表达式,其结果会与每个 case 后的值进行比较。
  • case 关键字后面跟着的值,是 expression 可能的匹配目标。
  • break 语句用于终止 switch 结构,防止执行多个 case 分支中的代码。
  • default 关键字是可选的,它代表当没有任何 caseexpression 匹配时要执行的代码块。

优势:

  • 可读性:相比于一系列的 if...else if...else 语句,switch 语句在有多个条件判断时更加清晰易懂。
  • 效率:在某些 JavaScript 引擎中,对于大量的条件判断,switch 语句的执行效率可能会更高。

类型:

  • 字符串:switch 语句可以用来匹配字符串。
  • 数字:switch 语句也可以用来匹配数字。
  • 表达式:switch 语句可以匹配表达式的结果。

应用场景:

  • 当需要根据变量的不同值来执行不同的操作时,可以使用 switch 语句。
  • 在处理状态机或者菜单选项等场景中,switch 语句可以使代码结构更加清晰。

遇到的问题及解决方法:

  • 忘记使用 break 语句可能会导致“贯穿”(fall-through)现象,即执行了多个 case 分支的代码。解决方法是确保每个 case 分支后都有 break 语句。
  • 如果 expression 的值没有与任何 case 匹配,且没有 default 分支,那么 switch 语句不会执行任何操作。可以通过添加 default 分支来处理这种情况。

示例代码:

代码语言:txt
复制
let day = 3;
let dayName;

switch (day) {
  case 1:
    dayName = 'Monday';
    break;
  case 2:
    dayName = 'Tuesday';
    break;
  case 3:
    dayName = 'Wednesday';
    break;
  // ...
  case 7:
    dayName = 'Sunday';
    break;
  default:
    dayName = 'Invalid day';
}

console.log(dayName); // 输出: Wednesday

在这个例子中,变量 day 的值为 3,因此 switch 语句会匹配到 case 3,并将 dayName 设置为 'Wednesday'。之后遇到 break 语句,跳出 switch 结构。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • java switch case 语句

    switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。...语法: switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可选 //你可以有任意数量的case语句...default : //可选 //语句 } switch case 语句有如下规则: switch 语句中的变量类型可以是: byte、short、int 或者 char。...从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。 switch 语句可以拥有多个 case 语句。...当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。 当遇到 break 语句时,switch 语句终止。

    1.8K20

    用表驱动代替switch-case

    不知道从什么时候开始,switch-case语句成了代码坏味道的代名词,写代码的时候小心翼翼地避开它,看到别人代码中的switch-case就皱眉头,想想其实大可不必这样,switch-case语句并不是代码坏味道的根源...,坏味道来自糟糕的代码(结构)设计,比如过多的switch-case分支,或者多重switch-case嵌套等等,这些都将导致代码可读性下降,如果再加上代码风格较差,代码不对齐,那么坏味道就相当地大了。...简短的switch-case还是继续用吧,但是对于分支太多的长switch-case最好能想办法化解开,那么什么算长什么算短呢?...化解长switch-case的方法有很多种,用函数封装或者宏取代case块是治标不治本的方法,使用表驱动通常是治疗这种顽症的有效方法,本文将介绍如何用表驱动方法化解长switch-case。...这是使用switch-case的典型场景,先看一个使用switch-case的方案: STATUS DriverIoControl(UINT function_no, PVOID para_in

    80450

    有了 elseif 为什么还要 switch case

    引出 你有没有想过既然有了if elseif, 为什么还要设计一个switch case的语法出来呢?...以下几种switch case均可以写成if else的形式(java 代码): // 形式一 switch(a){ case 1: break; case 2: break;...switch case仅支持数字和字符串相等的判断, 甚至在 C 语言中只支持数字相等(其实其他语言也只支持数字, 随便写个 java 反编译一下就会发现, 它将一个switch case转成了两个,...和if else的区别呼之欲出了. switch case利用了数组的随机访问, 大幅度提升了判断的效率....别说, 我试了几种比较流行的语言, 发现Python就不支持, 哈哈, 用了这么久Python还是突然发现它不支持switch case, 由此可见, switch case我用的比较少.

    98520

    一个switch case引起的线上bug

    当时第一反应是不可能 2、通过QA同学提供的test case,在测试环境通过curl发送请求,发现果然广告返回值跟预期不符。 3、通过git log对比,发现近期只有一个switch语句有修改。...故障原因 下面是错误代码 switch (dsp_res->bid_type()) {         case 0:         {           auto info = dsp_response...此处,我们再贴一次之前的代码: switch (dsp_res->bid_type()) {         case 0:         {           auto info = dsp_response...此处列下switch case的三个规则:switch...case的三个规则: 既无成功匹配,又无default子句,那么swtich语句块什么也不做; 无成功匹配,但有default,那么swtich... choice = ");     scanf( "%d", &iChoice);     switch (iChoice)     {     case 1:         i++;

    795140
    领券