本文目录导读:

  1. switch是什么?—— 代码界的“多岔路口”
  2. 基础语法结构(附图解)
  3. 实战案例:根据星期几输出活动
  4. switch vs if-else:什么时候用哪个?
  5. 常见误区与最佳实践
  6. 高级技巧:case穿透的巧妙应用
  7. 一张图记住switch

switch是什么?—— 代码界的“多岔路口”

想象一下,你站在一个岔路口,面前有多个方向可以选择,如果使用if-else,就像是一个个问路,每走一段就停下判断:“是这个方向吗?不是?那继续走下一个路口。”

而switch语句更像是一个智能路牌——你直接说出目的地编号,路牌瞬间把你引向正确的方向。

switch的核心作用:根据变量的不同值,执行不同的代码块,它特别适合处理多个固定值的判断场景。


基础语法结构(附图解)

switch (表达式) {

case 值1:

// 当表达式等于值1时执行

break;

case 值2:

// 当表达式等于值2时执行

break;

// ... 可以有任意多个case

default:

// 所有case都不匹配时执行

}

图解执行流程(用文字模拟):

┌──────────┐

│ 表达式 │

└────┬─────┘

┌─────┴─────┐

│ 匹配 │

│ case 1? │────────→ 执行case1代码 → break(跳出)

└─────┬─────┘

│ 不匹配

┌─────┴─────┐

│ 匹配 │

│ case 2? │────────→ 执行case2代码 → break(跳出)

└─────┬─────┘

│ 不匹配

...

│ 所有case都不匹配

┌──────────┐

│ default │────────→ 执行default代码

└──────────┘

温馨提示:实际编程时,你可以把上面的文字流程图用画图软件转成箭头图,会更直观。


实战案例:根据星期几输出活动

let day = 3; // 假设今天是星期三

let activity;

switch (day) {

case 1:

activity = "去游泳";

break;

case 2:

activity = "去爬山";

break;

case 3:

activity = "去看电影";

break;

case 4:

activity = "去图书馆";

break;

case 5:

activity = "去聚餐";

break;

case 6:

case 7:

activity = "在家休息 🛌";

break;

default:

activity = "无效的星期数";

}

console.log(`今天是星期${day},建议活动:${activity}`);

// 输出:今天是星期3,建议活动:去看电影

图解重点

  • case 6

    case 7

    共享同一个代码块——这是case穿透(fall-through)的巧妙用法

  • 共享同一个代码块——这是case穿透(fall-through)的巧妙用法
  • 每个case末尾的
  • break

    是“出口标志”,没有它代码会继续向下执行

  • 是“出口标志”,没有它代码会继续向下执行

  • switch vs if-else:什么时候用哪个?

    场景推荐使用原因
    判断多个固定值(1,2,3...)switch代码更简洁、可读性强
    判断范围(>50, <100)if-elseswitch不支持范围判断
    判断字符串(少量固定值)switch(现代语言支持)比多个if-else更清晰
    判断复杂条件(&&if-else

    核心原则:当你要判断的是一个变量的多个固定值时,switch是你的最佳选择。


    常见误区与最佳实践

    ❌ 错误1:忘记写break

    let score = 85;

    switch (true) { // 错误用法!

    case score >= 90:

    console.log("优秀");

    break;

    case score >= 80:

    console.log("良好");

    break;

    }

    // 这段代码永远不会匹配,因为switch比较的是全等

    改正:判断范围请用if-else,或者使用

    switch(true)

    技巧(不推荐,容易混淆)

    技巧(不推荐,容易混淆)

    ❌ 错误2:case值类型不匹配

    let num = "2";

    switch (num) {

    case 2: // "2" !== 2,不匹配

    console.log("匹配数字2");

    break;

    case "2":

    console.log("匹配字符串2");

    break;

    }

    // 输出:匹配字符串2

    提示:switch使用全等比较(===),类型不同不会匹配

    ✅ 最佳实践:把default放在最后

    即使你觉得所有情况都已覆盖,也建议加上default,用于处理意外值。


    高级技巧:case穿透的巧妙应用

    有些场景下,我们故意不使用break,让多个case共享代码:

    // 根据月份判断季节

    let month = 4;

    let season;

    switch (month) {

    case 12:

    case 1:

    case 2:

    season = "冬季";

    break;

    case 3:

    case 4:

    case 5:

    season = "春季";

    break;

    case 6:

    case 7:

    case 8:

    season = "夏季";

    break;

    case 9:

    case 10:

    case 11:

    season = "秋季";

    break;

    default:

    season = "无效月份";

    }

    console.log(`${month}月是${season}`);

    // 输出:4月是春季

    图解这种用法

    case 3: ──┐

    case 4: ──┤──→ 共享"春季"代码块

    case 5: ──┘

    多个case像漏斗一样汇聚到一个出口。


    一张图记住switch

    ┌─────────────────────┐

    │ switch(变量) │

    └─────────┬───────────┘

    ┌───────────────┬────────────────┐

    ▼ ▼ ▼

    ┌─────────┐ ┌─────────┐ ┌──────────┐

    │ case 1 │ │ case 2 │ │ default │

    │ 代码块1 │ │ 代码块2 │ │ 默认代码 │

    │ break │ │ break │ │(可选) │

    └─────────┘ └─────────┘ └──────────┘

    │ │ │

    └───────────────┴──────────────┘

    ┌──────┐

    │ 结束 │

    └──────┘

    最后的建议:在代码中适当使用switch,让你的逻辑更清晰、代码更优雅,但别忘了——工具没有绝对的好坏,适合场景的才是最好的。


    动手试试:打开你的编辑器,创建一个switch语句,用实际案例验证今天学到的知识吧!

    switch用法图解,从入门到精通,一张图看懂多岔路口-switch游戏下载社区