关于JavaScript中的forEach和中断/返回的问题

时间:2019-12-13 13:17:25

标签: javascript loops foreach

我是JS新手,对return语句有疑问。 为什么我必须使用return false来摆脱JS中的forEach循环?

这可以正常工作:

let answer;
    let found = false;
    for (let i = 0; i < database.length; i++){
        let p = database[i];
        if (p.id === person.id){
            database[i] = person; //Overwrite if found
            answer = 'Person information changed.';
            found = true;
            break;
        }
    }

但是另一方面,这是行不通的:

database.forEach(element => {
        if(element.email == req.body.email || element.nachname == req.body.nachname || element.vorname == req.body.vorname)
            res.send(element);
            break;
    });

我收到此错误-> SyntaxError:非法的break语句。

这些循环之间是否有区别? 我知道您可以中断for,while和switch循环,但是forEach与众不同的原因是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

原因是我们正在将回调函数传递给forEach函数。这意味着您不能使用诸如breakcontinue之类的循环条件。

答案 1 :(得分:1)

forEach中运行的代码在不同函数中。