‘ return’关键字在‘ forEach’函数中是什么意思?

$('button').click(function () {
[1, 2, 3, 4, 5].forEach(function (n) {
if (n == 3) {
// it should break out here and doesn't alert anything after
return false
}
alert(n)
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click me</button>

我的问题: 为什么它仍然提醒下一个号码,尽管我调用 return? 就像: 忽略下面的代码,继续使用下一个元素

303181 次浏览

return退出当前的函数,但迭代仍在继续,所以你得到了“下一个”项,该项跳过if并警告4…

如果你需要停止循环,你应该使用一个普通的for循环,如下所示:

$('button').click(function () {
var arr = [1, 2, 3, 4, 5];
for(var i = 0; i < arr.length; i++) {
var n = arr[i];
if (n == 3) {
break;
}
alert(n);
})
})

你可以阅读更多关于js break &继续这里:http://www.w3schools.com/js/js_break.asp

Mozilla开发者网络:

除了抛出异常,没有其他方法可以停止或打破forEach()循环。如果你需要这样的行为,forEach()方法是错误的工具。

提前终止可以通过以下方式完成:

其他数组方法:every()some()find()findIndex()用返回真值的谓词测试数组元素,以确定是否需要进一步迭代。