今天除夕,突然和家人谈到今年是闰年,想起来一个之前的判断闰年的代码,突然写了写竟然忘了,赶紧总结一下,祝大家除夕快乐呀!!!
1. 共同点
- 都能实现多分支选择, 多选1
- 大部分情况下可以互换,能用 switch语句实现的就一定可以使用 if来实现,但是反之不一定,如果是区间范围就采用 if,如果是等值判断请使用 switch
2.if和switch的区别
2.1if和switch分别是什么
if语句:表达式的结果是boolean布尔类型(常用于区间判断)
switch语句:表达式类型不能是boolean布尔类型,枚举(常用于等值判断)
2.2switch case与if else的效率问题
switch case与if else的区别:switch case会生成一个跳转表来指示实际的case分支的地址,而if…else却需要遍历条件分支直到命中条件,
switch case的优缺点
(1)switch case的优点:
当分支较多时,用switch的效率是很高的。因为switch是确定了选择值之后直接跳转到那个特定的分支.
(2)switch case的缺点:
switch…case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch…case的空间利用率将变得很低。
if else的优缺点
(1)if else的优点:if else能应用于更多的场所以if else比较灵活。
(2)if else的缺点:if else必须遍历所以得可能值。
3.总结:
- (常用于区间判断,),if语句:
- 枚举(常用于等值判断,处理case为比较**确定值**的情况),switch语句
- 分支比较多且无法穷尽时最好用 if, 其它情况可以按照个人习惯
- 如果数据量不是很大, 并且数据是固定的可以用Switch,理论上switch语句执行效率高,而且结构更清晰。
4.判断闰年平年:
// 1.定义空变量,用于后面寻储存用户输入的数据
let year = null
let month = null
let day = null
while (true) {
year = +prompt("请输入年份")
month = +prompt("请输入月份")
if (year <= 0) {
alert(`请输入正确的年份`)
continue
} else if (month < 1 || month > 12) {
alert(`请输入正确的月份`)
} else {
break
}
}
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31
break
case 4:
case 6:
case 9:
case 11:
day = 31
break
case 2:
if (year % 400 === 0 || year % 4 === 0) {
day = 29
} else {
day = 28
}
break
}
alert(`${year}年的${month}月有${day}天`)