Skip to content

JS Function - Switch #14

@jtwang7

Description

@jtwang7

JS Function - switch

参考文章:

语法

参数:

  • expression:表达式,通常是一个变量。
  • value: 匹配项。
switch (expression) {
  case value1:
    // 当 expression 的结果与 value1 匹配时,执行此处语句
    [break;]
  case value2:
    // 当 expression 的结果与 value2 匹配时,执行此处语句
    [break;]
  ...
  case valueN:
    // 当 expression 的结果与 valueN 匹配时,执行此处语句
    [break;]
  [default:
    // 如果 expression 与上面的 value 值都不匹配,执行此处语句
    [break;]]
}

作用

switch 语句评估一个表达式,将表达式的值与 case 子句匹配,并执行与该情况相关联的语句。

执行步骤:

  1. 首先设置表达式 n(通常是一个变量)。
  2. 计算得到表达式的结果。
  3. 随后将表达式的值与结构中的每个 case 的值做比较。
  4. 如果存在匹配,则与该 case 关联的代码块会被执行。
  • 可选的 break 语句确保程序立即从相关的 case 子句中跳出 switch 并接着执行 switch 之后的语句。若 break 被省略,程序会继续执行 switch 语句中的下一条语句。请使用 break 来阻止代码自动地向下一个 case 运行。
  • default 可放置在 switch 内部的任意位置,JavaScript 会在它找不到匹配项时跳回到那个 default。

拓展

多 case 单一操作

原理:
如果 case 语句之下没有 break ,它将继续执行下一个 case 语句,而不管 case 是否符合条件。
效果:
多个 case 语句执行得到同一结果。

switch (expression) {
  case value1:
    // 当 expression 的结果与 value1 匹配时,执行此处语句
  case value2:
    // 上一个 case 没有 break 语句,因此忽略 case value2 并向下执行
  ...
  case valueN:
    // 当 expression 的结果与 valueN 匹配时,执行此处语句
    [break;]
  [default:
    // 如果 expression 与上面的 value 值都不匹配,执行此处语句
    [break;]]
}

例子

var Animal = 'Giraffe';
switch (Animal) {
  case 'Cow':
  case 'Giraffe':
  case 'Dog':
  case 'Pig':
    console.log('This animal will go on Noah\'s Ark.');
    break;
  case 'Dinosaur':
  default:
    console.log('This animal will not.');
}

多 case 关联操作

原理:
如果 case 语句之下没有 break ,它将继续执行下一个 case 语句,而不管 case 是否符合条件。
效果:
根据 expression 决定起始 case 子语句,并以放置 case 语句的从当前 case 语句往下顺序遍历。

switch (expression) {
  case value1:
    // 当 expression 的结果与 value1 匹配时,执行此处语句
  case value2:
    // 上一个 case 没有 break 语句,因此忽略 case value2 并向下执行
  ...
  case valueN:
    // 当 expression 的结果与 valueN 匹配时,执行此处语句
    [break;]
  [default:
    // 如果 expression 与上面的 value 值都不匹配,执行此处语句
    [break;]]
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions