天天看点

条件判断时,switch还是if

switch和if应该是两个最有名的条件判断的关键字,很多人也对何时使用这两个关键字不清楚。

传统上,很多学习使用swtich和if的都是从C语言开始的,由于swtich本身不支持字符串,所以,很多如果采用字符串判断的语句,都不采用switch而采用了if语句。

但随着语言的增多,如JAVA、Golang等语言,对switch语言进行了更多的支持,支持了String类型,尤其是JAVA等纯面向对象语言,所有实体都是基于类的,消灭了字符和字符串的区别。

同时,即使是C/C++等语言,也可以通过其他方式,把字符串判断变为swtich支持的类型判断。

因此,进行条件判断时,需要switch还是if,可以用其他方法来考虑。

switch和if的区别是:swtich背后,是Binary Tree(即二叉树)组成的表,可以通过一次数值判断找到对应的语句;

这意味着,switch语句一定有一个Binary Tree结构表,这增加了程序的空间消耗,可以让大规模数据的时候,查找更方便些;

由上分析可得,当只有1个条件判断时,可以采用if语句,毕竟调用二叉树结构表也挺耗时的;如果为多条件判断时,用swtich可以更快一点。

同时,由于swtich采用了表结构,意味着switch对应的数值必然为常量;当非常量时,不建议采用swtich。

基于以上,我建议组内的一个小伙伴,把简单的JS语言的条件判断(多条件,但对应常量不同)全改成了switch,也算是提高了程序允许效率。自认为效率改进的每一步,都是工程师的成就。

继续阅读