foreach()中return初探

本文探讨了JavaScript中forEach()循环与for循环在使用return时的不同行为。在forEach()中,return仅结束当前迭代,而不会跳出整个循环,与for循环的return效果不同。为在forEach()中实现类似跳出循环的效果,可以尝试使用try...catch捕获异常或利用some和every方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、forEach()中的return与for循环中的return一样吗?

下面是一个小实践的例子:

let arr = ['1','2','3','4'];
arr.forEach((item) => {
    console.log("foreach",item);
    if (item === '2') {
        return ; 
    }
});
for (let i = 0; i < 4; i++) {
    console.log("arr",arr[i]);
    if (arr[i] === '2') {
        return ;  
    }
}
// 输出结果
/*foreach 1
 *foreach 2
 *foreach 3
 *foreach 4
 *arr 1
 *arr 2
 */

通过输出结果可知,两个是不一样的(因为输出结果都不一样)

那么拓展一下,使用break会怎么样?

forEach():

let arr = ['1','2','3','4'];
arr.forEach((item) => {
    console.log("foreach",item);
    if (item === '2') {
        break ;  // 会报错
    }
});

for(): 

let arr = ['1','2','3','4'];
for (let i = 0; i < 4; i++) {
    if (arr[i] === '2') {
        break ;
    }
    console.log("arr",arr[i]); 
}

/*
 * arr 1
 * arr 2
 */

可以看到forEach()中使用break会报错,在for()中使用break与return效果一样,都是直接跳出循环,但是要使用return,for循环必须在一个函数中 

二、有什么区别

  • forEach()中的return只会结束此次循环,执行下一次循环
  • for中的return会直接跳出循环,不再执行下面的循环

三、如何在forEach()中直接退出循环 

使用try{} catch() {}  捕获异常实现:

let arr = ['1','2','3','4'];
try {
    arr.forEach((item) => {
        if (item === '2') {
            throw new Error("退出循环");
        }
        console.log("foreach",item);
    });
} catch (e) {
    if (e.message === "退出循环") {
        console.log("结束了");
    } else {
        console.log(e.message);
    }
}
/*
 *foreach 1
 *结束了
 */

或者使用 some 或者 every 代替 forEach:

  • some:对数组中每一项运行给定函数,只要有一项返回true,就会跳出循环,函数返回true ;
  • every:对数组中每一项运行给定函数,只要每一项都返回true,函数返回true ,所以只要有一项不是true就会退出循环;
let flag = arr.some((item) => {
    console.log("arr",item); 
    if (item === '2') {
        return true;
    }
});
console.log(flag); 
/*
 *arr 1
 *arr 2
 *true
 */
let flag = arr.every((item) => {
    console.log("arr",item);
    if (item !== '2') {
        return true;
    }
});
console.log(flag);
/*
 *arr 1
 *arr 2
 *false
 */

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值