switch 语句用来选择多个需被执行的代码块之一。
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。
functiondemo(param){switch(param){case'1':
console.log('1')breakcase'2':
console.log('2')breakdefault:
console.log('default')}}demo('2')// 2demo(2)// defaultdemo(newString('2'))// default
let o1 ={}let o2 ={}let o3 ={}let o4 = o3
functiondemo(o){switch(o){case o1:
console.log('o1')breakcase o2:
console.log('o2')breakcase o3:
console.log('o3')breakdefault:
console.log('default')}}demo(o1)// o1demo(o3)// o3demo(o4)// o3
6. case后接表达式
functiondemo(param){switch(true){case param =='1':
console.log('1')breakcase param =='2':
console.log('2')breakdefault:
console.log('default')}}demo(1)// 1demo('1')// 1demo(2)// 2
functiondemo(){switch(3){case1+1:
console.log('1 + 1')breakcase1+2:
console.log('1 + 2')breakcase1+3:
console.log('1 + 3')breakdefault:
console.log('default')}}demo()// 1 + 2
functiondemo(a, b){switch(a){case b +1:
console.log('b + 1')breakcase b +2:
console.log('b + 2')breakcase b +3:
console.log('b + 3')breakdefault:
console.log('default')}}demo(3,1)// b + 2demo(4,1)// b + 3demo(4,2)// b + 2demo(4,4)// default
7. 表达式中的严格相等
functiondemo(){let a ='hello'let b ='10'switch(true){case(a || b ==10):
console.log('1')breakdefault:
console.log('default')}}// a || b == 10 的值为 hello,和 true 不严格相等demo()// default
functiondemo(){let a ='hello'let b ='10'switch(true){case!!(a || b ==10):
console.log('1')breakdefault:
console.log('default')}}demo()// 1
版权归原作者 周晓风 所有, 如有侵权,请联系我们删除。