0 Comments

防止switch贯穿

发布于:2012-12-03  |   作者:广州网站建设  |   已聚集:人围观

 

   JavaScript语言中那些显而易见的危险或无用的特性不是最糟糕的,这些特性很容易被避免。最糟糕的特性像“带刺的玫瑰”,它们是有用的,但也是危险的。

switch语句的由来可以追溯到FORTRAN IV的go to语句。除非明确地中断流程,否则每次条件判断后都贯穿到下一个case条件。switch语句的基本语法格式如下:

 

  1. switch ( expression ){  
  2.     case label:  
  3.         statementList  
  4.     case label:  
  5.         statementList  
  6.     ...  
  7.     default:  
  8.         statementList  

 

     当执行switch语句时,JavaScript解释器首先计算expression表达式的值,然后使用这个值与每个case从句中label标签值进行比较,如果相同则执行该标签下的语句。在执行时如果遇到跳转语句,则会跳出switch结构,否则按顺序向下执行,直到switch语句末尾。如果没有匹配的标签,则会执行default从句中的语句。如果没有default从句,则跳出switch结构,执行其后的句子。从ECMAScript v3版本开始允许case从句中可以是任意的表达式,这在C/C++和Java语言中是不允许的。switch语句的示例如下:

  1. switch (a = 3){  
  2.     case 3-2:  
  3.         alert(1);  
  4.         break;  
  5.     case 1+1:  
  6.         alert(2);  
  7.         break;  
  8.     case b=3:  
  9.         alert(3);  

 

     在switch语句中,case从句只是指明了想要执行代码的起点,并没有指明终点,如果没有向case从句中添加break语句,则会发生连续贯穿现象,从而忽略后面case从句,这样就会造成switch结构的逻辑混乱。不过,如果是在函数中使用switch语句,还可以使用return语句来代替break语句,这两个语句都可以终止switch语句,防止case从句之间发生逻辑贯穿。
标签:
飞机