code: function iterator(obj, iteratee, memo, keys, index, length) {
                    for (; index >= 0 && index < length; index += dir) {
                      var currentKey = keys ? keys[index] : index;
                      memo = iteratee(memo, obj[currentKey], currentKey, obj);
                    }
                    return memo;
                  }
docs: Optimized iterator function as using arguments.length in the main function will deoptimize the, see #1991.