function ArrayIteratorNext() {
  var iterator = this;
  var value = UNDEFINED;
  var done = true;

  if (!IS_RECEIVER(iterator) ||
      !HAS_DEFINED_PRIVATE(iterator, arrayIteratorNextIndexSymbol)) {
    throw MakeTypeError(kIncompatibleMethodReceiver,
                        'Array Iterator.prototype.next', this);
  }

  var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol);
  if (!IS_UNDEFINED(array)) {
    var index = GET_PRIVATE(iterator, arrayIteratorNextIndexSymbol);
    var itemKind = GET_PRIVATE(iterator, arrayIterationKindSymbol);
    var length = TO_UINT32(array.length);

    // "sparse" is never used.

    if (index >= length) {
      SET_PRIVATE(iterator, arrayIteratorObjectSymbol, UNDEFINED);
    } else {
      SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, index + 1);

      if (itemKind == ITERATOR_KIND_VALUES) {
        value = array[index];
      } else if (itemKind == ITERATOR_KIND_ENTRIES) {
        value = [index, array[index]];
      } else {
        value = index;
      }
      done = false;
    }
  }

  return %_CreateIterResultObject(value, done);
}
function ArrayIteratorNext() {
  var iterator = this;
  var value = UNDEFINED;
  var done = true;

  if (!IS_RECEIVER(iterator) ||
      !HAS_DEFINED_PRIVATE(iterator, arrayIteratorNextIndexSymbol)) {
    throw MakeTypeError(kIncompatibleMethodReceiver,
                        'Array Iterator.prototype.next', this);
  }

  var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol);
  if (!IS_UNDEFINED(array)) {
    var index = GET_PRIVATE(iterator, arrayIteratorNextIndexSymbol);
    var itemKind = GET_PRIVATE(iterator, arrayIterationKindSymbol);
    var length = TO_UINT32(array.length);

    

    if (index >= length) {
      SET_PRIVATE(iterator, arrayIteratorObjectSymbol, UNDEFINED);
    } else {
      SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, index + 1);

      if (itemKind == ITERATOR_KIND_VALUES) {
        value = array[index];
      } else if (itemKind == ITERATOR_KIND_ENTRIES) {
        value = [index, array[index]];
      } else {
        value = index;
      }
      done = false;
    }
  }

  return %_CreateIterResultObject(value, done);
}
function ArrayIteratorNext ( ) { var iterator = this ; var value = UNDEFINED ; var done = true ; if ( ! IS_RECEIVER ( iterator ) || ! HAS_DEFINED_PRIVATE ( iterator , arrayIteratorNextIndexSymbol ) ) { throw MakeTypeError ( kIncompatibleMethodReceiver , 'Array Iterator.prototype.next' , this ) ; } var array = GET_PRIVATE ( iterator , arrayIteratorObjectSymbol ) ; if ( ! IS_UNDEFINED ( array ) ) { var index = GET_PRIVATE ( iterator , arrayIteratorNextIndexSymbol ) ; var itemKind = GET_PRIVATE ( iterator , arrayIterationKindSymbol ) ; var length = TO_UINT32 ( array . length ) ; // "sparse" is never used. if ( index >= length ) { SET_PRIVATE ( iterator , arrayIteratorObjectSymbol , UNDEFINED ) ; } else { SET_PRIVATE ( iterator , arrayIteratorNextIndexSymbol , index + 1 ) ; if ( itemKind == ITERATOR_KIND_VALUES ) { value = array [ index ] ; } else if ( itemKind == ITERATOR_KIND_ENTRIES ) { value = [ index , array [ index ] ] ; } else { value = index ; } done = false ; } } return % _CreateIterResultObject ( value , done ) ; }
ES6 section 22.1.5.2.1 %ArrayIteratorPrototype%.next( )
ES6 section 22 . 1 . 5 . 2 . 1 %ArrayIteratorPrototype% . next ( )