Version 1
[yaffs-website] / node_modules / core-js / library / modules / _for-of.js
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   , BREAK       = {}
8   , RETURN      = {};
9 var exports = module.exports = function(iterable, entries, fn, that, ITERATOR){
10   var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
11     , f      = ctx(fn, that, entries ? 2 : 1)
12     , index  = 0
13     , length, step, iterator, result;
14   if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
15   // fast case for arrays with default iterator
16   if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
17     result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
18     if(result === BREAK || result === RETURN)return result;
19   } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
20     result = call(iterator, f, step.value, entries);
21     if(result === BREAK || result === RETURN)return result;
22   }
23 };
24 exports.BREAK  = BREAK;
25 exports.RETURN = RETURN;