swich语句
补充点单词(看看就行):
switch: 游戏机, 岔道
case: 方案, 情况
break: 打断, 结束
default: 默认
正题来了(swich语句)
概念
(1)根据你要判断的数据决定执行哪一段代码
(2)把你的数据做出很多种匹配情况, 决定执行哪一种情况
基本语法
基本语法
switch (数据) {
case 情况一: 满足情况一的时候执行的代码
break
case 情况二: 满足情况二的时候执行的代码
break
default: 所有条件都不满足的时候执行的代码
}
注意事项
注意1: () 内的内容不会在转换成布尔了, 都会拿到一个最终结果, 进入到 switch 中去判断
注意2: 要判断的数据和每一个 case 必须是 值和数据类型(===) 都一样才叫做满足条件
注意3: case 位置尽量不写表达式, 因为会按照表达式的结果来进行条件判断
注意4: switch 不负责做范围性的判断
注意5: default 可以不写, 不写的时候, 所有 case 都不满足就没有 代码执行
注意6: break 如果不写会发生 break穿透效果
[^穿透效果:不管下一个 case 是不是满足, 都会直接执行代码, 直到遇到下一个 break 或者代码整体执行完毕为止]:
小案例
0 ~ 6 的数字在控制台输出星期几
var week = 4
switch(week){
case 0:
console.log('星期一')
case 1:
console.log('星期二')
case 2:
console.log('星期三')
case 3:
console.log('星期四')
case 4:
console.log('星期五')
case 5:
console.log('星期六')
case 6:
console,log('星期天')
default:
console.log('你判断的数据不是 0 ~ 6 的数子')
}
输出: 星期四
练习
练习1:根据成绩在控制台输出一些字母
90 以上 A
80 ~ 89 B
70 ~ 79 C
60 ~ 69 D
60 以下 E
var socer = 80
swicth (parseInt( socer / 10 )){
case 10:
case 9:
console.log('A')
case 8:
console.log('B')
case 7:
console.log('C')
case 6:
console.log('D')
break
default:
console.log('E')
}
输出: B
练习2:根据 1 - 12 这些数字输出当月多少天
(二月暂时按28天计算)
var month = 9
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
console.log('31')
break
case 4:
case 6:
case 9:
case 11:
console.log('30')
break
case 2:
console.log('28')
break
}
输出: 30
练习3:根据年月日三个变量信息,判断是当年的第几天
var year = 2020
var month = 12
var date = 31
//初始变量不设置为 0, 就是当月日期
var total = date
// 开始叠加月份
switch (month) {
case 12: total += 30
case 11: total += 31
case 10: total += 30
case 9: total += 31
case 8: total += 31
case 7: total += 30
case 6: total += 31
case 5: total += 30
case 4: total += 31 // 叠加 3 月
case 3:
// 需要叠加 2 月份的整月天数, 判断一下闰年
total += year % 4 === 0 && year % 100 !== 0 || year % 400 === 0 ? 29 : 28
case 2: total += 31 // 叠加 1 月
}
console.log(total)