/**
 * The base implementation of `_.sum` and `_.sumBy` without support for
 * iteratee shorthands. 
 *
 * @private
 * @param {Array} array The array to iterate over. 
 * @param {Function} iteratee The function invoked per iteration. 
 * @returns {number} Returns the sum. 
 */
function baseSum(array, iteratee) {
  var result,
      index = -1,
      length = array.length;

  while (++index < length) {
    var current = iteratee(array[index]);
    if (current ! == undefined) {
      result = result === undefined ?  current : (result + current);
    }
  }
  return result;
}

module.exports = baseSum;
