在封闭内部打破循环

时间:2014-06-01 12:50:06

标签: javascript

for (var e = 0; e < markers.length; e += 1) {
    (function (e, markers, latLngBounds) {
        if (latLngBounds.contains(markers[e])) {
            updatePrompt("Marker is contained");
            // Break for loop
        }
    })();
}

在上面的示例中,在调用updatePrompt方法之后,如何突破包含闭包的循环?

3 个答案:

答案 0 :(得分:3)

var broken = false;

for (var e = 0; e < markers.length; e += 1) {
    if (broken) {
        break;
    } else {
        (function (e, markers, latLngBounds) {
            if (latLngBounds.contains(markers[e])) {
                updatePrompt("Marker is contained");
                broken = true;
            }
        })();
    }
}

有点冗长,但你明白了。

这也可以在现代浏览器中使用Array.some

markers.some(function(marker) {
    if (latLngBounds.contains(marker)) {
        updatePrompt("Marker is contained");
        return true;
    }
    return false;
});

答案 1 :(得分:1)

不确定我是否正确,但如果你想打破循环集  e = markers.length;

此声明

后循环不会继续

答案 2 :(得分:0)

另一种方式:

for (var e = 0; e < markers.length; e += 1) {
    if ((function (e, markers, latLngBounds) {
        if (latLngBounds.contains(markers[e])) {
            updatePrompt("Marker is contained");
            return 1;
        }
        return 0;
    })())
        break;
}