|
|
|
|
|
不像for
循環(huán)可以用break
強(qiáng)迫退出循環(huán),forEach
循環(huán)需要另尋方法強(qiáng)行退出循環(huán),本文將介紹兩種實(shí)現(xiàn)方法。
我們需要將 Array.prototype.forEach
循環(huán)包裝在 try catch
語句中,以便我們可以捕獲我們將要拋出的錯(cuò)誤,中斷循環(huán)。
示例:
const breakFE = () => {
throw new Error("BREAK_FE")
}
const handleBreakFEError = e => {
if (e.message !== "BREAK_FE") {
throw e
} else {
console.log("javascript foreach break!")
}
}
try {
[1, 2, 3].forEach(item => {
if (item > 1) {
breakFE()
}
console.log(item)
})
} catch (e) {
handleBreakFEError(e)
}
輸出
1
javascript foreach break!
示例:
let breakFe = false;
[1, 2, 3].forEach(item => {
if (item > 1) {
return
}
console.log(item)
})
該示例說明如何使用 if
語句跳過 forEach
循環(huán)中的計(jì)算。
實(shí)際上不能使用 if
語句“中斷” JavaScript forEach
循環(huán),因?yàn)樗詴?huì)在你的數(shù)組上執(zhí)行所有迭代。
但是你可以大大減少每次迭代中發(fā)生的工作量。
如果你在 forEach
循環(huán)的每次迭代中進(jìn)行大量計(jì)算,那么雖然并不完美,但你可以使用 if
語句來減輕執(zhí)行該工作的情況,這有點(diǎn)像在每次迭代時(shí)調(diào)用 continue
。
本文介紹了兩種 break
退出 JavaScript forEach
循環(huán)的方法,不過這并非理想,如果你需要中途退出循環(huán),你最好使用 for
循環(huán),而不是 forEach
循環(huán)。你可以了解一下for與forEach循環(huán)的幾個(gè)區(qū)別,此外,你要了解,不是所有瀏覽器都支持forEach
語句,JS中不兼容IE瀏覽器的循環(huán)語句有哪些?for..of等,如果數(shù)據(jù)量較大,你可能還需要考慮到程序執(zhí)行的速度性能問題,通過實(shí)測(cè)速度比較:JS中的for、for...of和forEach循環(huán),你可能更明白自己需要選擇何種循環(huán)方法。
相關(guān)文章