在JavaScript的for...in和for...of循环中,我能使用continue和break吗?

36

我能在for...infor...of类型的循环中使用breakcontinue吗?还是它们只能在常规的for循环中使用。

例如:

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

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

当然可以,为什么你不能呢? - VLAZ
3
为什么不尝试自己做呢?在条件语句中添加一个调试器或控制台日志。 - adiga
2
@Persijn 缺乏研究。这太简单了 - 只需运行已经存在的代码并进行微小修改(添加日志语句)即可揭示答案。更不用说成千上万的其他在线资源了。如果问题是“我可以在我的代码中使用一个不同的名称而不是propName吗”,你还会说这是一个好问题吗? - VLAZ
4
我认为这个问题很好,因为我看到其他用户在搜索它。即使可以在其他地方找到答案,我也认为在stackoverflow上有这个问题很有价值。请注意,我的翻译尽可能保留了原意,同时让句子更加通俗易懂。 - Persijn
2
@Persijn,这是一个公正的观点。 - adiga
显示剩余2条评论
1个回答

41

是的 - 在所有循环中都有效。

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不包括forEachforEach实际上是定义在Array原型上的函数。)


可能有一种方法可以在forEach中获得相同的行为。这可能是另一个好问题。 - Persijn
1
我认为forEach不是一个真正的循环,而是一个带有回调参数的函数。此外,break不仅限于循环,还适用于所有块(MDN链接),这是它与continue的区别。 - Kaddath
2
不是所有的代码块,只有循环和开关语句。 - Jack Bashford
2
...和标记块。 - Teemu
forEach 中,如果条件不满足,可以使用 return。虽然这不是很惯用的写法。 - Lucio Mollinedo
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接