code: function forEach(collection, callback, thisArg) {
        var index = -1,
            length = collection ? collection.length : 0;
  
        callback = callback && typeof thisArg == 'undefined' ? callback : lodash.createCallback(callback, thisArg);
        if (typeof length == 'number') {
          while (++index < length) {
            if (callback(collection[index], index, collection) === false) {
              break;
            }
          }
        } else {
          forOwn(collection, callback);
        }
        return collection;
      }
docs: Iterates over a `collection`, executing the `callback` for each element in
  the `collection`. The `callback` is bound to `thisArg` and invoked with three
  arguments; (value, index|key, collection). Callbacks may exit iteration early
  by explicitly returning `false`.
  
  @static
  @memberOf _
  @alias each
  @category Collections
  @param {Array|Object|String} collection The collection to iterate over.
  @param {Function} [callback=identity] The function called per iteration.
  @param {Mixed} [thisArg] The `this` binding of `callback`.
  @returns {Array|Object|String} Returns `collection`.
  @example
  
  _([1, 2, 3]).forEach(alert).join(',');
  // => alerts each number and returns '1,2,3'
  
  _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, alert);
  // => alerts each number value (order is not guaranteed)