|
|
|
|
|
為什么我們不能在 forEach
中使用 break
、continue
或 return
?
讓我們從一個(gè)例子開(kāi)始。
<script>
let amounts=[1.25,2.25,3.25,4.25];
amounts.forEach((item)=>{
if(item===3.25){
break;
}
});
</script>
輸出
提示是語(yǔ)法錯(cuò)誤,無(wú)效的 break 語(yǔ)句。
我們深入了解一下 forEach
方法。
官方MDN(Mozilla 開(kāi)發(fā)者網(wǎng)絡(luò))文檔說(shuō),
除了拋出異常之外,沒(méi)有其他方法可以停止或中斷
forEach()
循環(huán)。如果有這樣的需求,則不應(yīng)該使用forEach()
方法。
原因是 forEach
循環(huán)方法有一個(gè)應(yīng)用于數(shù)組中每個(gè)元素的回調(diào)函數(shù)。因此,無(wú)論函數(shù)內(nèi)是否有跳轉(zhuǎn)語(yǔ)句,如 continue 或 break,回調(diào)函數(shù)都需要自行完成。
官方MDN文檔還說(shuō)到,
可以通過(guò)像
for
、for...of
和for...in
這樣的循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)提前終止。當(dāng)不需要進(jìn)一步迭代時(shí),諸如every()
、some()
、find()
和findIndex()
等數(shù)組方法也會(huì)立即停止迭代。
示例
使用 findIndex()
方法立即停止迭代
const array1 = [5, 12, 8, 130, 44];
const isLargeNumber = (element) => element > 13;
console.log(array1.findIndex(isLargeNumber));
// 輸出: 3
參考文章
相關(guān)文章