switch写法详解

我们在开发项目中经常遇到对数据的判断进行相应的逻辑(if..else  ,三元运算等),Switch 语句用来选择多个需要执行的代码块 ,一定程度上简化了if....else

1. 语法

复制代码
switch(表达式) {
    case n:
        代码块
         break;
     case n:
         代码块
         break;
     default:
         默认代码块
}
复制代码

 

 

 

2. 代码解释
计算一次 switch 表达式
把表达式的值与每个 case 的值进行对比
如果存在匹配,则执行关联代码
3. break 关键词
如果 JavaScript 遇到 break 关键词,它会跳出 switch 代码块。不必中断 switch 代码块中的最后一个 case。代码块在此处会自然结束。

4. default 关键词
default 关键词规定不存在 case 匹配时所运行的代码。

default 不必是 switch 代码块中最后一个 case。
如果 default 不是 switch 代码块中最后一个 case,请记得用 break 结束默认 case。
default 是可选的,并非必不可少(虽然惯例如此)。break 相关规则对 default 仍
然适用。
5. 严格的比较
Switch case 使用严格比较(===)。值必须与要匹配的类型相同。只有操作数属于同一类型时,严格比较才能为 true。

复制代码
function demo(param) {
switch (param) {
case '1':
console.log('1')
break
case '2':
console.log('2')
break
default:
console.log('default')
}
}

demo('2') // 2
demo(2) // default
demo(new String('2')) // default
复制代码
复制代码
let o1 = {}
let o2 = {}
let o3 = {}
let o4 = o3

function demo (o) {
switch (o) {
case o1:
console.log('o1')
break
case o2:
console.log('o2')
break
case o3:
console.log('o3')
break
default:
console.log('default')
}
}

demo(o1) // o1
demo(o3) // o3
demo(o4) // o3
复制代码

6. case后接表达式

复制代码
function demo (param) {
switch (true) {
case param == '1':
console.log('1')
break
case param == '2':
console.log('2')
break
default:
console.log('default')
}
}

demo (1) // 1
demo ('1') // 1
demo (2) // 2
复制代码

 

复制代码
function demo () {
switch (3) {
case 1 + 1:
console.log('1 + 1')
break
case 1 + 2:
console.log('1 + 2')
break
case 1 + 3:
console.log('1 + 3')
break
default:
console.log('default')
}
}

demo() // 1 + 2
复制代码
复制代码
function demo (a, b) {
switch (a) {
case b + 1:
console.log('b + 1')
break
case b + 2:
console.log('b + 2')
break
case b + 3:
console.log('b + 3')
break
default:
console.log('default')
}
}

demo(3, 1) // b + 2
demo(4, 1) // b + 3
demo(4, 2) // b + 2
demo(4, 4) // default
复制代码

7. 表达式中的严格相等(重点五颗星)

复制代码
function demo () {
let a = 'hello'
let b = '10'

switch (true) {
case (a || b == 10):
console.log('1')
break
default:
console.log('default')
}
}

// a || b == 10 的值为 hello,和 true 不严格相等
demo() // default
复制代码

 

复制代码
function demo () {
let a = 'hello'
let b = '10'

switch (true) {
case !!(a || b == 10):
console.log('1')
break
default:
console.log('default')
}
}

demo() // 1
复制代码

 

写在最后,本文是个人对Switch的用法总结,有不到位的地方还请各位大佬指正,感谢关注!!!

posted @   喆星高照  阅读(1658)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-07-19 sm加密前端解析--JS实现国密算法SM2加密
2021-07-19 前端js解析识别图片二维码
点击右上角即可分享
微信分享提示