要求
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]