条件语句对比
简介
常见的条件语句有if-else,switch-case,查询表
各种条件语句比对
if-else
最坏的情况下(value=10)我们可能要做10次判断才能返回正确的结果
if (value == 0){
return result0;
} else if (value == 1){
return result1;
} else if (value == 2){
return result2;
} else if (value == 3){
return result3;
} else if (value == 4){
return result4;
} else if (value == 5){
return result5;
} else if (value == 6){
return result6;
} else if (value == 7){
return result7;
} else if (value == 8){
return result8;
} else if (value == 9){
return result9;
} else {
return result10;
}
switch-case
- 让代码显得可读性更强
- 如果多个value值返回同一个结果,就不用重写return那部分的代码。
- 当case数达到一定数量时,swtich-case语句的效率是比if-else高的,因为switch-case采用了branch table(分支表)索引来进行优化,当然各浏览器的优化程度也不一样。
switch (value) {
case 0:
return result0;
case 1:
return result1;
case 2:
return result2;
case 3:
return result3;
case 4:
return result4;
case 5:
return result5;
case 6:
return result6;
case 7:
return result7;
case 8:
return result8;
case 9:
return result9;
default:
return result10;
}
查找表
优点:当数据量很大的时候,查找表的效率通常要比if-else语句和swtich-case语句高.
局限性:当然查找表的使用是有局限性的,每个case对应的结果只能是一个取值而不能是一系列的操作。
注意点:查找表能用数字和字符串作为索引,而如果是字符串的情况下,最好用对象来代替数组。
var results = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10];
return results[value];
小结
- 当只有两个case或者case的value取值是一段连续的数字的时候,我们可以选择if-else语句
- 当有3~10个case数并且case的value取值非线性的时候,我们可以选择switch-case语句
- 当case数达到10个以上并且每次的结果只是一个取值而不是额外的JavaScript语句的时候,我们可以选择查找表
参考资料
- 高性能JavaScript 循环语句和流程控制 http://www.imooc.com/article/3657