podkreśl każde sprawdzanie powrotu {} wywołania zwrotnego

Sprawdzałem, jak UnderscoreJS wdraża swojeeach/forEach

//somewhere up top:
var breaker = {};

//then the each function
var each = _.each = _.forEach = function (obj, iterator, context) {
    if (obj == null) return;
    if (nativeForEach && obj.forEach === nativeForEach) {
        obj.forEach(iterator, context);
    } else if (obj.length === +obj.length) {
        for (var i = 0, l = obj.length; i < l; i++) {
            if (iterator.call(context, obj[i], i, obj) === breaker) return;
        }
    } else {
        for (var key in obj) {
            if (_.has(obj, key)) {
                if (iterator.call(context, obj[key], key, obj) === breaker) return;
            }
        }
    }
};

//iterator = callback
//context  = optional third parameter of each to provide context in the callback
//obj      = the list
//key      = key of the object (i for index when an array)

Zasadniczo wykonuje wywołanie zwrotne dla każdego elementu w obiekcie / tablicy. Ale to mi się myli

if (iterator.call(context, obj[key], key, obj) === breaker) return;

Z tego, co rozumiem, jeśli wywołanie zwrotne zwróci obiekt, pętla pęka, ale ...Dlaczego się do tego porównujebreaker który jest obiektem wewnętrznym w module podkreślenia?. Czy to się nie sprawdza?false cały czas, ponieważ nawet jeśli wywołanie zwrotne zwraca obiekt, to zawszefalse ponieważ nie jest to ten sam obiekt (a więc pętla)nigdy się nie łamie). Jaki jest tego powód?

questionAnswers(1)

yourAnswerToTheQuestion