一尘不染

JavaScript短路Array.forEach就像调用break

javascript

[1,2,3].forEach(function(el) {
if(el === 1) break;
});

如何使用forEachJavaScript中的新方法执行此操作?我试过return;return false;breakbreak崩溃,return除了继续迭代外什么也不做。


阅读 300

收藏
2020-04-22

共1个答案

一尘不染

有没有内置的能力breakforEach。要中断执行,您将必须抛出某种异常。例如。

var BreakException = {};



try {

  [1, 2, 3].forEach(function(el) {

    console.log(el);

    if (el === 2) throw BreakException;

  });

} catch (e) {

  if (e !== BreakException) throw e;

}

JavaScript异常不是很漂亮。for如果您确实需要传统循环,则传统循环可能更合适break

使用

Array#some

而是使用Array#some

[1, 2, 3].some(function(el) {

  console.log(el);

  return el === 2;

});

之所以some可行,true是因为只要按数组顺序执行任何回调,就返回return true,从而使其余部分的执行短路。

some,它的反函数every(将在上停止return false),以及forEach所有ECMAScript Fifth
Edition方法,都需要将它们添加到Array.prototype缺少它们的浏览器中。

2020-04-22