if...else与switch...case的执行效率问题
Posted 倒立的蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了if...else与switch...case的执行效率问题相关的知识,希望对你有一定的参考价值。
switch语句比if else的执行效率要高
switch...case与if...else的根本区别:
switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。
具体地说,switch...case会生成一份大小(表项数)为最大case常量+1的跳表,程序首先判断switch变量是否大于最大case 常量,若大于,则跳到default分支处理;否则取得索引号为switch变量大小的跳表项的地址(即跳表的起始地址+表项大小*索引号),程序接着跳到此地址执行,到此完成了分支的跳转。
以上是关于if...else与switch...case的执行效率问题的主要内容,如果未能解决你的问题,请参考以下文章
JS入门基础(if else 与 switch case / node安装)