菜单选择功能用 switch 实现,核心是将用户输入作为判断值,每个 case 对应操作逻辑并以 break 防穿透,default 处理无效输入;需注意类型匹配、容错处理(如 trim/toLowerCase)、函数封装及完整流程设计。

菜单选择功能用 switch 实现交互,核心是把用户输入(比如数字、字母或字符串)作为 switch 的判断值,每个 case 对应一个菜单项的操作逻辑,最后别忘了 break 防止穿透,以及 default 处理无效输入。
基础结构:用数字选菜单项
适合命令行或简单控制台程序。用户输入 1~4,分别对应“查看”“添加”“删除”“退出”:
let choice = prompt("请选择操作(1-4):");
switch (choice) {
case "1":
console.log("正在查看列表...");
break;
case "2":
console.log("请输入要添加的内容:");
break;
case "3":
console.log("请输入要删除的编号:");
break;
case "4":
console.log("再见!");
break;
default:
console.log("无效选择,请输入 1~4");
}
注意:prompt() 返回的是字符串,所以 case 里要用 "1" 而不是 1;如果用 Number(prompt()) 转成数字,case 就写数字即可。
支持字符串输入:更自然的菜单体验
让用户直接输 “add”、“del”、“quit”,可读性更强:
动态切换AI模型以优化成本与性能。当用户发出“eco mode”、“balanced mode”、“smart mode”或“max mode”等模式指令,或使用“/modes status”查询状态及“/modes setup”配置模式时触发。
const cmd = prompt("输入命令(view/add/del/quit):").trim().toLowerCase();
switch (cmd) {
case "view":
showList();
break;
case "add":
addItem();
break;
case "del":
removeItem();
break;
case "quit":
alert("已退出");
break;
default:
alert("不支持的命令:" + cmd);
}
加 .trim().toLowerCase() 是为了容错——忽略空格和大小写差异。
配合函数封装,让代码更清晰
每个 case 不写大段逻辑,而是调用已有函数,便于维护和复用:
-
把业务逻辑抽离到独立函数中,如
showList()、saveData() -
在
switch里只做路由分发,职责单一 - 可配合返回值或状态码统一处理后续流程,比如操作失败时跳出 switch 后提示错误
常见坑与提醒
-
漏写
break→ 会顺序执行下一个case,导致误操作 - 类型不匹配 → 输入是字符串但 case 写数字,或反之,结果进不到任何分支
-
没写
default→ 用户乱输时静默失败,体验差 - case 值重复或遗漏 → 比如写了 "1" 和 "01",但用户只输 "1",后者不会触发
switch 本身不处理输入获取和验证,它只是“选择器”。真正好用的菜单,需要把输入读取、清洗、转换、分发、反馈这一整套串起来,switch 在中间承担最干净的分支调度角色。

















