index.js
function forEach(callback, thisArg = UNDEFINED, defaultReturn = UNDEFINED) {
    const savedReturn = BREAK.clearDefault(defaultReturn);
    const iMax = this.length;
    let result = thisArg;
    for (let i = 0; i < iMax; i++) {
        const value = this[i];
        const returned = callback.call(thisArg, value, i, this);
        if (returned === BREAK) {
            result = BREAK.returned;
            break;
        }
    }
    BREAK.restoreDefault(savedReturn);
    return result;
}
function forEach(callback, thisArg = UNDEFINED, defaultReturn = UNDEFINED) {
    const savedReturn = BREAK.clearDefault(defaultReturn);
    const iMax = this.length;
    let result = thisArg;
    for (let i = 0; i < iMax; i++) {
        const value = this[i];
        const returned = callback.call(thisArg, value, i, this);
        if (returned === BREAK) {
            result = BREAK.returned;
            break;
        }
    }
    BREAK.restoreDefault(savedReturn);
    return result;
}
function forEach ( callback , thisArg = UNDEFINED , defaultReturn = UNDEFINED ) { const savedReturn = BREAK . clearDefault ( defaultReturn ) ; const iMax = this . length ; let result = thisArg ; for ( let i = 0 ; i < iMax ; i ++ ) { const value = this [ i ] ; const returned = callback . call ( thisArg , value , i , this ) ; if ( returned === BREAK ) { result = BREAK . returned ; break ; } } BREAK . restoreDefault ( savedReturn ) ; return result ; }
Execute forEach on array like object and return value using BREAK

@this             array like object over which to loop
@param callback   callback function (value, index, array)
@param thisArg    optional arg to use as this for the callback
@param defaultReturn optional default return value
@return {*}
Execute forEach on array like object and return value using BREAK