Javascript ForEach循环是否允许使用break和continue?

Javascript ForEach循环是否允许使用break和continue?,javascript,Javascript,ForEach循环是否允许我们使用break和continue 我已尝试使用这两种方法,但收到一个错误: Illegal break/continue statement 如果它允许,我如何使用它们呢?不,它不允许,因为您将回调作为返回传递,它作为普通函数执行 让我澄清一下: var arr = [1,2,3]; arr.forEach(function(i) { console.log(i); }); // is like var cb = function(i) { c

ForEach
循环是否允许我们使用
break
continue

我已尝试使用这两种方法,但收到一个错误:

Illegal break/continue statement

如果它允许,我如何使用它们呢?

不,它不允许,因为您将回调作为返回传递,它作为普通函数执行

让我澄清一下:

var arr = [1,2,3];
arr.forEach(function(i) {
    console.log(i);
});

// is like

var cb = function(i) {
    console.log(i);
    // would "break" here do anything?
    // would "continue" here do anything?
    // of course not.
}

for(var j = 0; j < arr.length; j++) {
    cb(arr[j]);
}
var-arr=[1,2,3];
arr.forEach(功能(i){
控制台日志(i);
});
//就像
var cb=功能(i){
控制台日志(i);
//在这里“休息”会有什么作用吗?
//在这里“继续”会有什么作用吗?
//当然不是。
}
对于(var j=0;j
forEach所做的就是反复调用一个实际函数,忽略它是如何退出的,然后在下一个元素中再次调用它。

在该回调函数中,如果返回,它将像
forEach
中的
continue
一样工作。因为此时函数的其余部分不会执行,并且会再次调用它。没有类似的
中断。

Ruby支持这种灵活性,使用blocks/procs而不是methods/lambdas

Per:

注意:无法停止或中断forEach循环。解决方案是使用Array.every或Array.some。见下面的例子


every
some
forEach
完全相同,只是它们注意回调的返回值<代码>每个
都会因错误值而中断,
一些
会因真实值而中断,因为它们会短路。它们与
&&
|
完全类似<代码>&测试每个表达式是否真实,
|
测试某些表达式是否真实,这将帮助您记住短路是如何与
每个
一些
一起工作的。如有疑问,请尝试。

如前所述,您不能在JavaScript
数组.prototype.forEach
循环中使用
continue
break
。但是,还有其他选择:

选择1 使用jQuery
.each()
函数()

只需
返回true
即可继续,或
返回false
即可中断循环

选择2 只需使用
return
继续,或使用
抛出新错误()。我不一定推荐这样做,但知道这是可能的,这很有趣

try {
    [1, 2, 3, 4].forEach(function(i) {

        if (i === 2) {
            return; // continue
        }

        if (i === 3) {
            throw new Error(); // break
        }

        console.log(i);
    });
}
catch (e) {
}

预期结果只是
1

继续进行下一次迭代。与return相同吗?@user3450695 continue是非法的,并抛出一个错误。哪一个跳过块中剩余的“stuff”并转到下一个迭代?@user3450695添加到我的答案中。