JavaScript中跳不出的forEach循环,知道了结果,但是由何原因导致的呢?

在项目开发过程中会使用到forEach循环,在平时使用过程中未留意到如下的现象:

var arr=[1,2,3];// 循环一console.log('循环一:');
arr.forEach(function(item) {    if (item > 2) {        return false;
    }    console.log(item);
});// 循环二console.log('循环:');
arr.forEach(function(item) {    console.log(item);    if (item > 2) {        return false;
    }
});

可以看到循环一是想要的结果,而循环二却执行完循环了,这是为何呢?

https://img3.mukewang.com/5b8b458d000110ef05410138.jpg

海绵宝宝撒
浏览 956回答 3
3回答

拉丁的传说

ForEach(callback)这是一个回调方法,你return false并没有任何意义,想停止可以用for of。事实上都执行了3次回调,只是循环1中你第3次没打印而已。

九州编程

forEach满足条件后并不会跳出循环。循环一的输出语句是在return false的后面循环二的输出语句是在return false的前面,所以造成了这种假象。其实你应该用some()或者every();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript