我可以在 Javascript for...in 和 for...of 循环中使用 continue 和 break 吗?

Posted

技术标签:

【中文标题】我可以在 Javascript for...in 和 for...of 循环中使用 continue 和 break 吗?【英文标题】:Can I use continue and break in Javascript for...in and for...of loops? 【发布时间】:2019-11-11 22:10:29 【问题描述】:

我可以在for...infor...of 类型的循环中使用breakcontinue 语句吗?或者它们只能在常规 for 循环中访问。

例子:

myObject =  
  propA: 'foo', 
  propB: 'bar'
;

for (let propName in myObject) 
  if (propName !== 'propA') 
    continue;
  
  else if (propName === 'propA') 
    break;
  

【问题讨论】:

为什么不自己试试呢?在条件中添加调试器或控制台日志 这是一个简单的好问题。为什么这不适合 ***? @Persijn 缺乏研究。这简单了——只需运行已经存在的代码并稍作改动(添加日志语句)就可以找到答案。更不用说数以千计的 其他在线资源了。如果问题是“我可以在代码中使用与propName 不同的名称吗”,您还会说这是一个好问题吗? 我认为这个问题很好,因为我可以看到其他用户正在搜索这个问题。即使可以在其他地方找到答案,我也可以在 *** 上看到这个问题的价值。 @Persijn 这是一个公平的观点。 【参考方案1】:

是的 - 适用于所有循环。

const myObject =  
  propA: 'foo', 
  propB: 'bar'
;

for (let propName in myObject) 
  console.log(propName);
  if (propName !== 'propA') 
    continue;
  
  else if (propName === 'propA') 
    break;
  

(循环我的意思是forfor...infor...ofwhiledo...while不是forEach,这实际上是在Array原型上定义的函数.)

【讨论】:

可能有一种方法可以在 forEach 中获得相同的行为。这可能是另一个好问题。 我认为forEach 并不是一个真正的循环,而是一个带有回调参数的函数。此外,break 不限于循环,而是所有blocks (MDN link),这与continue 不同 并非所有块 - 只是循环和切换。 ...和标记的块。 哦,是的,那些也是@Teemu。

以上是关于我可以在 Javascript for...in 和 for...of 循环中使用 continue 和 break 吗?的主要内容,如果未能解决你的问题,请参考以下文章

javascript的for in实例代码

JavaScript 循环:for...in 与 for

JavaScript for in 遍历

JavaScript for in 遍历

JavaScript之for...in和for...fo区别

javascript总for of和for in的区别