好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

JavaScript switch 语句

JavaScript switch 语句

switch 语句评估 一个 表达式,将表达式的值与case子句匹配,并执行与该情况相关联的语句。—— MDN

switch 是另一种控制流程的方式,根据条件执行不同的 代码 块。

能用 switch 实现的都可以用 if 实现。

1. 基本语法

    switch   ( 表达式 )   { 
     case  表达式结果为值的时候 : 
      做的事情 ; 
       break  ; 
     case  表达式结果为值的时候 : 
      做的事情 ; 
       break  ; 
     case   ...  : 
      做的事情 ; 
       break  ; 
     case  表达式结果为值n的时候 : 
      做的事情 ; 
       break  ; 
     default  : 
      上面 一个 情况都没中的时候做的事情 ; 
   } 
 

switch 语句在执行的时候会先接受 一个 表达式,最后根据表达式的结果进行条件的匹配,即 case 后面的值。

  var  num  =   ; 

 switch   ( num  +   )   { 
   case   : 
    console .  log  (  'case的值是2'  )  ; 
     break  ; 
   case   : 
    console .  log  (  'case的值是3'  )  ; 
     break  ; 
   case   : 
    console .  log  (  'case的值是4'  )  ; 
   case   : 
    console .  log  (  'case的值是5'  )  ; 
   default  : 
    console .  log  (  '没有匹配到值'  )  ; 
 } 
 

num 为 3 ,所以 加上 1 之后为 4 ,case 匹配到的就是 4 ,所以 输出 了 case的值是4 ,但是紧接着后面的 case的值是5 与 没有匹配到值 也被 输出 了。
这是因为分支内碰到 break 才会中断执行,如果不中断,即便后面的条件不匹配了,里面的 代码 块还是会被继续执行。

需要注意的是 case 后面的值与表达式的结果在比较的时候是使用严格相等(===)的 。

2. default 的位置可以不固定

default 不一定要写在末尾,但通常推荐写在末尾。

  switch   (   >   )   { 
   default  : 
    console .  log  (  '我是default'  )  ; 
   case   true  : 
    console .  log  (  '1 不可能大于 2,肯定是 代码 写错了'  )  ; 
     break  ; 
 } 
 

@H_386_ 301 @

在所有case都不匹配的时候,就会回去走 default 。

需要注意的是,default 语句块里也需要加 break ,不然会继续往下执行,直至碰到 break ,大部分情况下只有末尾的分支不需要加 break ,因为已经是最后 一个 分支了。

3. 灵活使用 break

switch 语句与 break 的特性结合可以很灵活。

如以下场景:

服务端返回了 用户 信息,当 用户 的 VIP 等级为 1、2、3 的时候, 显示 初级VIP,VIP 等级为 4、5 的时候, 显示 中级 VIP,当 VIP 等级为 6 的时候, 显示 高级 VIP,否则 显示 普通会员。

  var  user  =   {  vip :    }  ; 

 switch   ( user . vip )   { 
   case   : 
   case   : 
   case   : 
    console .  log  (  '初级vip'  )  ; 
     break  ; 
   case   : 
   case   : 
    console .  log  (  '中级vip'  )  ; 
     break  ; 
   case   : 
    console .  log  (  '高级vip'  )  ; 
     break  ; 
   default  : 
    console .  log  (  '普通会员'  )  ; 
 } 

 //  输出 :"初级vip" 
 

利用没有 break 就会往下执行的特点,可以给条件归类。相比 if 语句,使用 switch 有更强的表现力。

页面 中有一排 图片 ,共 4 张,当 用户 选择了某一张后,隐藏这张 图片 前面的所有 图片 ,取消选择后 显示 所有 图片 。

  function   showImage  ( index )   { 
  console .  log  (  ' 显示 第'   +  index  +   ' 图片 '  )  ; 
 } 

 function   hideAllImage  (  )   { 
  console .  log  (  '先隐藏所有 图片 '  )  ; 
 } 

 // 点击事件 
 function   event  ( e )   { 
   var  selected  =  e . index ;   // 0表示没有选择 1表示选择第一张 以此类推 

   hideAllImage  (  )  ; 

   switch   ( selected )   { 
     default  : 
     case   : 
       showImage  (  )  ; 
     case   : 
       showImage  (  )  ; 
     case   : 
       showImage  (  )  ; 
     case   : 
       showImage  (  )  ; 
   } 
 } 

 event  (  {  index :    }  )  ; 
 

其实这个需求,使用 switch 并不是最适合的场景,假如 图片 一多,上百上千张,这种方式就显得有些愚蠢了。

这提供这种实现方式不是为了 显示 他有多好,而是为了能在思考问题的时候,可以想到有这样的方案,来评判是不是更适合现有业务场景。

没有最好的方案,只有最适合的方案。

4. 小结

switch 语句可以做到的,if 语句都可以做到,实际开发应结合具体业务做选择。

依据 switch 的 break 和 default 特性,常常可以很方便的实现 其他方式需要大量额外 代码 的需求。

JavaScript while 语句 ? ?JavaScript 数组

查看更多关于JavaScript switch 语句的详细内容...

  阅读:55次

上一篇

下一篇

第1节:什么是 JavaScript    第2节:学习环境准备    第3节:调试方案    第4节:JavaScript 变量    第5节:JavaScript 数据类型    第6节:JavaScript if 语句    第7节:for 语句    第8节:JavaScript 算数运算符    第9节:JavaScript 比较运算符    第10节:JavaScript 逻辑运算符    第11节:JavaScript 函数    第12节:JavaScript 表达式    第13节:JavaScript 对象    第14节:JavaScript 字符串    第15节:JavaScript 数字    第16节:JavaScript 数组    第17节:JavaScript switch 语句    第18节:JavaScript while 语句    第19节:JavaScript 的 break 与 continue    第20节:JavaScript with    第21节:document.cookie    第22节:JavaScript Function    第23节:JavaScript Math    第24节:JavaScript Date    第25节:JavaScript RegExp    第26节:JavaScript JSON    第27节:什么是 DOM    第28节:DOM 和 JavaScript 的关系    第29节:获取和操作 DOM 节点    第30节:DOM 与事件    第31节:DOM 事件绑定    第32节:DOM 事件对象    第33节:DOM 事件流    第34节:事件相关的优化    第35节:自定义事件    第36节:表单校验    第37节:什么是 BOM    第38节:常用的 BOM 相关对象    第39节:BOM 常用属性和方法    第40节:AJAX    第41节:异常处理    第42节:三元运算符    第43节:逗号操作符    第44节:void    第45节:typeof    第46节:delete 操作符    第47节:debugger    第48节:getter & setter    第49节:new 运算符与构造函数    第50节:JavaScript 原型    第51节:JavaScript instanceof    第52节:JavaScript this    第53节:严格模式    第54节:作用域    第55节:闭包    第56节:变量提升    第57节:对象包装器    第58节:Lodash    第59节:moment    第60节:swiper    第61节:ECMAScript 6    第62节:Node.js    第63节:Babel    第64节:CSS 预处理器    第65节:代码规范    第66节:TypeScript    第67节:WebComponents    第68节:Vue、React、Angular    第69节:小程序    第70节:JavaScript 关键字    第71节:分号导致的问题    第72节:对象属性访问问题    第73节:this 使用问题    第74节:浮点数精度问题    第75节:独一无二的 NaN    第76节:避免全局污染    第77节:控制台观察对象问题    第78节:根据环境选择语言特性    第79节:相关资源