JavaScript does not have a range() operator, but can be implemented using generators :
function* range2(start, end, step) { step = step || 1 yield start; if (step > 0 && start >= end) return; if (step < 0 && start <= end) return; yield* range(start + step, end, step); } function* range(start, end, step) { step = step || 1 if (step > 0) { for (let i = start; i < end; i+= step) yield i; } else { for (let i = start; i > end; i+= step) yield i;} } console.log([...range2(0,6)]) console.log([...range2(0,10,3)]) console.log([...range2(10,0,-3)]) console.log([...range(0,11,2)]) console.log([...range(10,-1,-2)]) ----- [ 0, 1, 2, 3, 4, 5 ] [ 0, 3, 6, 9 ] [ 10, 7, 4, 1 ] [ 0, 2, 4, 6, 8, 10 ] [ 10, 8, 6, 4, 2, 0 ]