浅析switch和if(开发中这两者的优缺点;分析出优缺点在使用就能更确定自己需要使用哪个函数了)

发布时间 2023-06-15 17:48:53作者: 98剑南春

分析 Switch 相较于 if 的优点 

1、switch 执行效率  高于  if 的执行效率

  分析:

    switch是在编译阶段将子函数的地址和判断条件绑定了,只要直接将a的直接映射到子函数地址去执行就可以了,

    if处理起来首先要把a的值放到CPU的寄存器中,然后要把比较的值放到CPU的另一个寄存器中,然后做减法,然后根据计算结果跳转到子函数去执行,这样一来就要多出3步的操作了,如果逻辑判断多的话,那么将会比switch多处许多倍的操作,尽管寄存器操作的速度很快,但是效率方面还是不如switch ;

 2、代码清晰简单易读;

  如下例子很清晰看到 什么条件下可以执行哪个子函数

分析 Switch 相较于 if 的缺点

1、阅读一下代码快速寻找到问题

let a = 0; 

switch(a){
  case 0:
    console.log("let is 0 ")
    break;
 case 1:
    console.log("let is 1 ")
 case 2:
    console.log("let is 2 ")
}

缺点一、语法正确,逻辑错误

在第8行和第10行下面我没有添加关键字break; 这就导致这段代码的行为逻辑与我的设计初衷不符了。

 缺点二、语法比较死板

switch尽管对于break很宽容,但是对判断条件很严苛,case后面只能跟常量

缺点三、需要子函数来处理分支

这个缺点跟缺点一有关,为了防止漏写break

 

为什么要使用break来做一个判断结束呢?

    最初代码中是没有子函数的概念的,那时候都是用goto随意跳转的,你想去第10行代码,很简单goto 10就可以了。这种编程思维在C的早期阶段还是一直受到影响的,因此早期的C也没有子函数,都是一堆逻辑处理混乱在一起,goto满天飞,所以那时候你没有一个最强大脑是写不了程序的。那为了告诉程序我这里条件判断处理结束,就添加了break作为终止符号。