好得很程序员自学网

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

JavaScript 的 break 与 continue

JavaScript 的 break 与 continue

break 与 continue 用来控制循环流程。

1. break

break 用来中断循环,在 for 循环和 while 循环中都适用。

如:从列表中寻找 id 为 n 的项(每一项的 id 是唯一的)

  var  list  =   [  {  id :    }  ,   {  id :    }  ,   {  id :    }  ,   {  id :    }  ]  ; 

 var  n  =   ; 

 var  i  =   ,  len  =  list . length ; 
 for   (  ;  i  <  len ;  i ++  )   { 
  console .  log  ( i )  ; 
   if   ( list [ i ]  . id  ===  n )   { 
    console .  log  ( list [ i ]  )  ; 
     break  ; 
   } 
 } 
 

其实即便没有 break,上面的语句也可以正常执行,因为 id 是唯一的,即便将整个数组遍历完,也只有 一个 目标项。

但是如果整个列表有 上万 条数据,除了 获取 id ,还有一些消耗 性能 的操作,那 break 就变得很关键。
假如最好的情况,寻找的项就在第一项,这时候碰到 break ,剩下无用的寻找操作就都不会执行了,也没有必要执行。

将 break 应用在 while 中也是同理,满足某些条件的时候用来中断 while 循环。

如:游戏中的怪物产生了 4 次连击,伤害由四个 随机 100 至 2000 的值累加构成,假如在累加的伤害过程中值达到 5000,则直接取当前累加结果作为最终伤害。

  var  total  =   ;   // 累积伤害 
 var  time  =   ;   // 累加 次数  

 while   ( time  <=   )   { 
   var  one  =  Math .  floor  ( Math .  random  (  )   *    +   )  ; 

  console .  log  ( one )  ; 

  total  +=  one ; 

   if   ( total  >   )   { 
     break  ; 
   } 

  time ++  ; 
 } 
 

通过 break,可以很容易的达到这个需求。

当然不使用 break 也是可以的,可以在达到条件后,将 time 变量累加到 一个 循环条件不成立的情况,也会跳出循环,但是建议使用 break ,否则可能还要去控制 break 之后的逻辑,因为 break 之后不一定就是循环结束了,也许还有其他操作。

在 switch 语句中也有 break 参与,详细的作用可以参阅 switch 语句章节。

2. continue

当循环中碰到 continue ,则会跳过这次循环,进入下一次循环。

如: 输出 0 至 100 之 间的 奇数

  var  i ; 
 for   ( i  =   ;  i  <=   ;  i ++  )   { 
   if   ( i  %    ===   )   { 
     continue  ; 
   } 

  console .  log  ( i )  ; 
 } 
 

当碰到偶数的时候,则跳过这次循环,反之则为奇数的情况,会 输出 值。

这个例子比较简单,当 一个 逻辑复杂的循环体出现的时候,continue 可以让 代码 块变得稍微简洁。

如:对 用户 列表进行批量操作,只操作 id (id 一定是数字) 末尾为 1 的 用户 。

  // 这是一份伪 代码  
 var  users  =   [   ...  很多 用户   ]  ;   // 

 var  i ,  len ; 
 for   ( i  =   ,  len  =  users . length ;  i  <  len ;  i ++  )   { 
   var  user  =  users [ i ]  ; 

   if   ( user . id  %    ===   )   {   // 取到末尾 
     continue  ; 
   } 

   if   ( user . edition )   {   // 如果 用户 的版本不是免费的 0是免费 其他则是收费 
     // 做一些操作 
   } 

   if   ( user . money )   {   // 如果 用户 有余额 
     // 做一些操作 
   } 

   // ... 
 } 
 

像这样,通过 continue 就可以让流程更清晰。

在 while 中的应用是一样的,continue 也可以在 while 中跳过当前循环。

使用 while 输出 0 至 100 的奇数:

  var  num  =   -  ; 
 while   ( num  <   )   { 
  num ++  ; 

   if   ( num  %    ===   )   { 
     continue  ; 
   } 

  console .  log  ( num )  ; 
 } 
 

整个流程与 for 循环非常相似。

许多 代码 规范不提倡使用 continue ,因为开发者水平的参差不齐,常有开发者在使用 continue 的时候,让整体逻辑产生了跳跃性,这不利于未来的 代码 维护者来对 代码 做阅读理解。

3. 小结

break 和 continue 适用于 for 循环和 while 循环。

continue 的使用没有 break 频繁,使用 continue 的时候需要注意,尽量不要使程序跳跃幅度过大,不利于后期维护。

所有需要使用 continue 的地方,都可以不使用 continue 实现。

switch 语句中也可以使用 break 来结束 switch 语句的执行。

JavaScript with ? ?JavaScript while 语句

查看更多关于JavaScript 的 break 与 continue的详细内容...

  阅读:49次

上一篇

下一篇

第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节:相关资源