算法题,为什么我使用自执行函数后无法得到返回值,而且在forEach里面使用break报错

问题1:

result的结果undefined

问题2:

使用break就报错

let result = (function select(A, B) {
    let arrA = A;
    let arrB = B;
    let resultCompared = [];
    arrA = new Set(A);
    arrB = new Set(B);
    arrA.forEach((item, index)=>{
        if(arrB.has(item)){
            console.log('邮箱等');
            return 0;
            break;
        } else {
            console.log('五香等');
        }
    });
    console.log('arrA == ', arrA);
    // return answer;
})([5, 1, 7, 5, 3, 10], [4, 2, 9, 6, 3])

console.log(result);
阅读 2.1k
3 个回答

undefined 是因为select函数无返回值
break是用来跳出循环的,在此箭头函数体内并不合适。
break与return不同,将二者放在同一语块内,犯了明显的语法错误,请自行参阅mdn

forEach 是无法中途退出的。然后坑爹的办法也有,那就是抛出异常。

map forEach等迭代器方法确实无法使用break来终止遍历,这种遍历方法并非传统的程序循环逻辑,而是一种类似回调函数的机制

当然有办法来终止,见楼上@linong 回答的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题