假设当我们只需知道某个数组有没有某个属性,如果找到了直接跳出循环,省略掉剩下的循环步骤是较优化的操作,但是for中是可以利用break跳出循环,但break在forEach中无效,那么forEach能不能跳出循环呢?当然是可以。
1.正常for循环break跳出循环
let strArr = ['a', 'b', 'c', 'd'], i = 0, length = strArr.length;for (; i < length; i++) { console.log(strArr[i]);//a if(arr[i] === 'a'){ //do something }; break;};
2.forEach结合try...catch()可以跳出循环
try { var arr = [1, 2, 3, 4]; arr.forEach(function (item, index) { //跳出条件 if (item === 3) { throw new Error("LoopTerminates"); } //do something console.log(item); });} catch (e) { if (e.message !== "LoopTerminates") throw e;};