条件语句对比

简介

常见的条件语句有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

  1. 让代码显得可读性更强
  2. 如果多个value值返回同一个结果,就不用重写return那部分的代码。
  3. 当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];

小结

  1. 当只有两个case或者case的value取值是一段连续的数字的时候,我们可以选择if-else语句
  2. 当有3~10个case数并且case的value取值非线性的时候,我们可以选择switch-case语句
  3. 当case数达到10个以上并且每次的结果只是一个取值而不是额外的JavaScript语句的时候,我们可以选择查找表

参考资料

  1. 高性能JavaScript 循环语句和流程控制 http://www.imooc.com/article/3657
posted @ 2017-02-06 14:08  悸浅qin  阅读(250)  评论(0编辑  收藏  举报