if 多分支和switch的区别

今天除夕,突然和家人谈到今年是闰年,想起来一个之前的判断闰年的代码,突然写了写竟然忘了,赶紧总结一下,祝大家除夕快乐呀!!!

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.总结:

  1. (常用于区间判断,),if语句

  1. 枚举(常用于等值判断,处理case为比较**确定值**的情况),switch语句

  1. 分支比较多且无法穷尽时最好用 if, 其它情况可以按照个人习惯

  1. 如果数据量不是很大, 并且数据是固定的可以用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}天`)

猜你喜欢

转载自blog.csdn.net/qq_52006046/article/details/128747464