whole_func_string: function arrayEach(arr, fn, startIndex, loop) {
      var length, index, i;
      if(startIndex < 0) startIndex = arr.length + startIndex;
      i = isNaN(startIndex) ? 0 : startIndex;
      length = loop === true ? arr.length + i : arr.length;
      while(i < length) {
        index = i % arr.length;
        if(!(index in arr)) {
          return iterateOverSparseArray(arr, fn, i, loop);
        } else if(fn.call(arr, arr[index], index, arr) === false) {
          break;
        }
        i++;
      }
    }
func_code_string: function arrayEach(arr, fn, startIndex, loop) {
      var length, index, i;
      if(startIndex < 0) startIndex = arr.length + startIndex;
      i = isNaN(startIndex) ? 0 : startIndex;
      length = loop === true ? arr.length + i : arr.length;
      while(i < length) {
        index = i % arr.length;
        if(!(index in arr)) {
          return iterateOverSparseArray(arr, fn, i, loop);
        } else if(fn.call(arr, arr[index], index, arr) === false) {
          break;
        }
        i++;
      }
    }
func_documentation_string: Basic array internal methods