(转)Switch_Case中的经典

来源:互联网 发布:怎样做淘宝代销 编辑:程序博客网 时间:2024/04/29 14:14

昨天在看JavaScript优化脚本时,其中有一条是使用三元运算符以及switch语句。关于优化代码时,使用Switch CaseIf Else要快,这点我们知道,但是三元运算符呢?

JavaScript精粹一书中提到,使用三元运算符比使用If Else语句要快。关于原因,书中并没有过多的介绍,我想这大概是因为使用三元运算符要比使用If Else代码要优化的多吧。好了,下面我们来看一个使用三元运算符的例子吧。

Var grade=score>=70?’pass’:fail;

此外,三元运算符也可以像If Else一样多层嵌套使用,不过为了增强其可读性,通常将代码分行写。看一下小例子:

Var grade=score>=90?’Good’:score>70?’Well’:’fail’;

Var grade=score>=90?’Good’:

                Score>70?’Well’:

                ‘fail’;

怎么样,上面使用三元运算符要比使用If Else节省不少代码空间吧。

关于三元运算符就说这么多,下面再说两个你没有用到过的Switch Case语句,不信?看看你就知道了。

Classical Switch Case

       Switch case (score){

              Case 90

                     grade=’Good’;

                     Break;

              Case 70

                     grade=’Well’;

                     Break;

              Default:

                     Grade=’fail’;

}

       New Pet Switch Case

              Switch case (true){

                     Case score>=90:

                            Var grade=’Good’;

                            Break;

                     Case score>70:

                            Var grade=’Well’;

                            Break;

                     Default:

                            Var grade=’fail’;

}

       Fast Switch Case:

              Switch (score>=70){

                     Case true:

                            Var grade=’pass’;

                            Break;

                     Case false:

                            Var grade=’fail’;

                            Break;

                     Default:

                            Grade=’It’s impossible to get this result!’;

}

       关于上面这三个Switch Case,毫无疑问,第一个是我们最熟悉的,也是最常用的,而且通过比较,可以发现第一个Switch Case的代码要比第二个要简单而且优化。但是两个Switch Case语句判断的条件不同,第一个判断的是一个表达式,第二个判断的是一个Bool值,我想判断Bool值应该比判断表达式速度要快。可惜目前百度Google没有给我明确的答案。

       此外,采用第二种判断结构在判断复杂条件时,优势更明显,而且有些复杂结构无法用第一种结构来判断。比如说,我去超市购物了,看到好多东西要买,就买了一些东西回来。如何使用Switch Case来判断我买了什么呢?看Example

       Switch Case true{

              Case apple>0

                     Respose.write(“我买苹果啦!”);

              Case banana>0

                     Respose.write(“我买香蕉啦!”);

              Case orange>0

                     Respose.write(“我买橘子啦!”);

              Case else

                     Respose.write(“忘了带钱了,回家拿钱去吧!”);

       }

       关于Switch Case,如果你有什么更新的想法,请联系我!