【问题标题】:Can I use continue and break in Javascript for...in and for...of loops?我可以在 Javascript for...in 和 for...of 循环中使用 continue 和 break 吗?
【发布时间】: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;
  }
}

【问题讨论】:

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

标签: javascript object ecmascript-6 for-in-loop for-of-loop


【解决方案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。
猜你喜欢
  • 1970-01-01
  • 2018-11-14
  • 2020-06-14
  • 1970-01-01
  • 2019-04-13
  • 2015-02-25
  • 2014-03-07
  • 2021-07-15
相关资源
最近更新 更多