1、forEach 退出循环
forEach 方法是 JavaScript 数组对象内置的一个迭代器,它遍历数组中的每一个元素并执行一定的函数操作。由于 forEach 方法是自动遍历整个数组,因此无法通过 break 或 return 语句退出循环。也就是说forEach() 方法是用于遍历数组的,而不是用来执行循环的,所以它没有办法让你像普通的循环一样控制流程。
以下是四种跳出 forEach 循环的方法及示例:
(1) throw new Error()
通过抛出异常的方式,强制退出整个 forEach 循环。
1 | try { |
(2)return + 变量
return 语句只能跳出本次迭代,无法完全退出循环,数组会继续迭代直到结束,因此无法完全退出循环。
1 | [1, 2, 3, 4, 5].forEach(function(item) { |
但是可以通过一个变量来保证满足条件时不再继续往下走
1 | let isBreak = false; |
(3)some
some 方法是 ECMAScript 5 新增的数组方法,它可以在遍历数组时返回 true 或 false,来控制是否继续遍历。如果 some 方法的回调函数返回 true,就会停止遍历。
1 | [1, 2, 3, 4, 5].some(function(item) { |
请注意,虽然有以上退出 forEach 循环的方法,但是并不建议在 forEach 循环中使用它们,因为这种做法可能会导致代码出现异常,或者增加代码的复杂度,不够简洁。如果需要遍历数组并在一定条件下停止遍历,建议使用其他的循环语句,如 for、for of 或 while 循环。
2、continue、break、return区别
(1) continue: 跳出本地循环,进入下一次循环
1 | for(let i = 0; i < 5; i++) { |
(2) break:跳出当前循环(如为多层循环,不影响外层循环)
1 | for(let i = 0; i < 5; i++) { |
(3) return:结束当前函数调用
所以不能在for循环中使用
3、总结
(1)forEach是一个迭代器,所以无法使用break或continue等来控制循环流程的操作来终止循环。可以通过every或some这类来实现满足条件后终止循环。
(2)continue为跳过本次循环,进入下一次循环。break为跳出当前循环,如果有多层循环,不影响外层循环。return为结束当前函数调用,所以for循环中不能使用return。