【Web前端问题】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;

}

});

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

图片描述

回答:

  1. ForEach(callback)这是一个回调方法,你return false并没有任何意义,想停止可以用for of

  2. 事实上都执行了3次回调,只是循环1中你第3次没打印而已。

回答:

forEach满足条件后并不会跳出循环。

循环一的输出语句是在return false的后面

循环二的输出语句是在return false的前面,所以造成了这种假象。

其实你应该用some()或者every();

回答:

forEach 遍历数组的时候是无法 break 或者 return false 中断的, 可以使用 for of 代替
这里贴一篇张鑫旭老师的文章写的很详细,可以去看一下 https://www.zhangxinxu.com/wo...

回答:

这里的return; 不管加不加return值, 可以看作是结束这个回调函数,所以如果遍历未结束会进入下一个回调。而并不能停止这个for循环。有点像continue的味道?

以上是 【Web前端问题】JavaScript中跳不出的forEach循环,知道了结果,但是由何原因导致的呢? 的全部内容, 来源链接: utcz.com/a/140705.html

回到顶部