首页 > JavaScript
JS中的if和switch该如何选择?
if 和 switch 都可以设计多重分支结构,一般情况下 switch 执行效率要高于 if 语句。但是也不能一概而论,应根据具体问题具体分析。简单比较如表所示。
相对而言,下面情况更事宜选用 switch 语句。
下面情况更事宜用 if 语句。
根据上述需求描述,确定检测的分数是一个线性区间值,因此选用 if 语句会更合适。
语句 | If 语句 | Switch 语句 |
---|---|---|
结构 | 通过嵌套结构实现多重分支 | 专为多重分支设计 |
条件 | 可以测试多个条件表达式 | 仅能测试一个条件表达式 |
逻辑关系 | 可以处理复杂的逻辑关系 | 仅能处理多个枚举的逻辑关系 |
数据类型 | 可以适用任何数据类型 | 仅能应用整数、枚举、字符串等类型 |
相对而言,下面情况更事宜选用 switch 语句。
- 枚举表达式的值。这种枚举是可以期望的、平行的逻辑关系。
- 表达式的值具有离散性,是不具有线性的非连续的区间值。
- 表达式的值是固定的,不会动态变化。
- 表达式的值是有限的,不是无限的,一般应该比较少。
- 表达式的值一般为整数、字符串等简单的值。
下面情况更事宜用 if 语句。
- 具有复杂的逻辑关系。
- 表达式的值具有线性特征,去对连续的区间值进行判断。
- 表达式的值是动态的。
- 测试任意类型的数据。
示例1
本例设计根据学生分数进行等级评定:如果分数小于 60,则不及格;如果分数在 60 与 75 之间,则评定为合格;如果分数在75 与 85 之间,则评定为良好;如果分数在 85 与 100 之间,则评定为优秀。根据上述需求描述,确定检测的分数是一个线性区间值,因此选用 if 语句会更合适。
if (score < 60) {console.log("不及格");} else if (score < 75) {console.log("合格");} else if (score <85) {console.log("良好");} else {console.log("优秀");}如果使用 switch 结构,则需要枚举 100 种可能,如果分数值还包括小数,这种情况就更佳复杂了,此时使用 switch 结构就不是明智之举。
示例2
设计根据性别进行分类管理。这和案例属于有效枚举条件,使用 switch 会更高效。switch (sex) { //离散值判断 case 1 : console.log("女士"); break; case 2 : console.log("男士"); break; default : console.log("请选择性别"); }
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算