--- /dev/null
+define(['../function/makeIterator_'], function (makeIterator) {
+
+ /**
+ * Return maximum value inside array
+ */
+ function max(arr, iterator, thisObj){
+ if (arr == null || !arr.length) {
+ return Infinity;
+ } else if (arr.length && !iterator) {
+ return Math.max.apply(Math, arr);
+ } else {
+ iterator = makeIterator(iterator, thisObj);
+ var result,
+ compare = -Infinity,
+ value,
+ temp;
+
+ var i = -1, len = arr.length;
+ while (++i < len) {
+ value = arr[i];
+ temp = iterator(value, i, arr);
+ if (temp > compare) {
+ compare = temp;
+ result = value;
+ }
+ }
+
+ return result;
+ }
+ }
+
+ return max;
+
+});