range、イテレータ
yield使えない環境でも、下みたいに自分で用意すればできる。
function range(min, max, exclude) { return { next: exclude ? function() { if (min < max) return min++; throw StopIteration }: function() { if (min <= max) return min++; throw StopIteration; }, __iterator__: function() this } } for(var i in range(0,10)) console.log(i); // 0, 1, 2, 3, ... , 10 console.log([i for(i in range(1,5))]); // [1, 2, 3, 4, 5]; var ret = []; for(var i in range(0,Infinity,true)) if(i % 7 == 0){ ret.push(i); if(ret.length >= 5) break; } console.log(ret); // [0, 7, 14, 21, 28]