JavaScript 基础
Document
运算符
深入数据和类型
函数进阶
原型、继承
类
浏览器存储
Web API
事件
错误处理
异步编程
网络请求
模块
练习
实例
工具与规范
软件架构模式
设计模式
在执行多个相等的判断时, switch
语句可以达到与 if
一样的效果,代码还可以写得更优雅。
语法如下:
switch(x) {
case value1:
code
[break]
case value2:
code
[break]
default:
code
[break]
}
x
会与每个 case
的值对比是否严格相等,如果相等则执行其中的代码块。否则会依次往下判断,如果都没有匹配则执行 default
中的代码块。
以下例子中就是将小于等于 3 的数字用中文数字的形式显示出来。
$$jsdemo$$
$$edit$$
let x = 2
switch (x) {
case 0:
alert("零")
break
case 1:
alert("一")
break
case 2:
alert("二")
break
case 3:
alert("三")
break
default:
alert("请输入零或小于等于三的正整数")
}
不可省略的 break
break
关键字会结束 switch
的执行,如果省略了 break
会导致匹配项和之后的所有代码块都被执行。
$$jsdemo$$
$$edit$$
let x = 2
switch (x) {
case 0:
alert("零")
case 1:
alert("一")
case 2:
alert("二") // 执行
case 3:
alert("三") // 执行
default:
alert("请输入零或小于等于三的正整数") // 执行
}
case 分组
可以让多个 case
分支共用一段代码块。
$$jsdemo$$
$$edit$$
let x = 3
switch (x) {
case 0:
alert("零")
break
case 1:
alert("一")
break
case 2:
case 3:
alert("二或三")
break
default:
alert("请输入零或小于等于三的正整数")
}
全等比较
switch
中的值与 case
中的值是采用的全等比较,包括类型上的判断,因此得额外注意两者的类型是否相等。
$$jsdemo$$
$$edit$$
let x = "2"
switch (x) {
case 0:
alert("零")
break
case 1:
alert("一")
break
case 2:
alert("二")
break
case 3:
alert("三")
break
default:
alert("请输入零或小于等于三的正整数")
}
总结
switch
能实现的使用 if ... else
都可以实现,部分情况下使用 switch
会使代码更整洁。也有部分语言直接舍弃了 switch
的语法,比如像 python
中就没有 switch
。
练习
- 将以下
if
语句改成switch
语句。
$$edit$$
$$jsdemo$$
// 国家中英文名转换器
let input = prompt("输入中文国家名")
if (input === "中国") {
alert("China")
} else if (input === "美国" || input === "美利坚") {
alert("U.S.A")
} else if (input === "日本") {
alert("Japan")
} else {
alert("请输入我认识的国家")
}
$$answer
$$jsdemo$$
$$edit$$
// 国家中英文名转换器
let input = prompt("输入中文国家名")
switch (input) {
case "中国":
alert("China")
break
case "美国":
case "美利坚":
alert("U.S.A")
break
case "日本":
alert("Japan")
break
default:
alert("请输入我认识的国家")
break
}
$$