$.for-of.js 891 B

12345678910111213141516171819
  1. var ctx = require('./$.ctx')
  2. , call = require('./$.iter-call')
  3. , isArrayIter = require('./$.is-array-iter')
  4. , anObject = require('./$.an-object')
  5. , toLength = require('./$.to-length')
  6. , getIterFn = require('./core.get-iterator-method');
  7. module.exports = function(iterable, entries, fn, that){
  8. var iterFn = getIterFn(iterable)
  9. , f = ctx(fn, that, entries ? 2 : 1)
  10. , index = 0
  11. , length, step, iterator;
  12. if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
  13. // fast case for arrays with default iterator
  14. if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
  15. entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
  16. } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
  17. call(iterator, f, step.value, entries);
  18. }
  19. };