[1,2,3].forEach(function(el) { if(el === 1) break; });
如何使用forEachJavaScript 中的新方法做到这一点?我试过了return;,return false;和break。break崩溃,return除了继续迭代什么都不做。
forEach
return;
return false;
break
return
没有内置的能力break。forEach要中断执行,您必须抛出某种异常。例如。
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。
for
相反,使用Array#some:
Array#some
[1, 2, 3].some(function(el) { console.log(el); return el === 2; });
这是有效的,因为任何回调都会立即some返回true,以数组顺序执行, return true,短路其余部分的执行。
some
true
some,它的逆every(将在 a 上停止return false),并且forEach都是 ECMAScript 第五版方法,需要将它们添加到Array.prototype缺少它们的浏览器中。
every
return false
Array.prototype