function range(start, end, step){
var l = arguments.length;
if(l == 0) return [];
if(l == 1) return arguments.callee(0, start, 1);
if(l == 2) return arguments.callee(start, end, 1);
var temp = []
// start = start>>0, end = end>>0, step = step>>0;
start >>= 0, end >>= 0, step >>= 0;
//console.log(start, end, step);
for(;start < end; start+= step){
temp.push(start);
}
return temp;
}
range(); // []
range(10); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(-10); // []
range(-10, -20); //[]
range(0, 10); //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(-10, 10, 2); // [-10, -8, -6, -4, -2, 0, 2, 4, 6, 8]
range(-10, 10, 0); //死循环
range(1, 10, -1); //死循环
//当 step s为 非正数时,将导至死循环, 修正如下 :
function range(start, end, step){
var l = arguments.length;
if(l == 0 || step <= 0) return [];
if(l == 1) return arguments.callee(0, start, 1);
if(l == 2) return arguments.callee(start, end, 1);
var temp = []
start >>= 0, end >>= 0, step >>= 0;
for(;start < end; start+= step){
temp.push(start);
}
return temp;
}
range(); // []
range(10); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(-10); // []
range(-10, -20); //[]
range(0, 10); //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(-10, 10, 2); // [-10, -8, -6, -4, -2, 0, 2, 4, 6, 8
range(-10, 10, 0); //[]
range(1, 10, -1); //[]