要求
range(..)
函数接收一个数字作为第一个参数,表示所期望数字范围的起始值。第二个参数也是一个数字,表示所期望范围的结束值(包含在内)。如果省略第二个参数,那么函数应该返回另一个函数,这个新函数会期望接收结束值作为参数。
function range(start,end) {// ..TODO..
}range(3,3); // [3]
range(3,8); // [3,4,5,6,7,8]
range(3,0); // []var start3 = range(3);
var start4 = range(4);start3(3); // [3]
start3(8); // [3,4,5,6,7,8]
start3(0); // []start4(6); // [4,5,6]
实现代码
function range(start, end) {start = Number(start) || 0;if (end === undefined) {return function getEnd(end2) {return getRange(start, end2);};} else {end = Number(end) || 0;return getRange(start, end);}
}function getRange(start, end) {let array = [];for (let i = start; i <= end; i++) {array.push(i);}return array;
}console.log(range(3, 3)); // [3]
console.log(range(3, 8)); // [3,4,5,6,7,8]
console.log(range(3, 0)); // []var start3 = range(3);
var start4 = range(4);console.log(start3(3)); // [3]
console.log(start3(8)); // [3,4,5,6,7,8]
console.log(start3(0)); // []console.log(start4(6)); // [4,5,6]