以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
39. 手写range()

以下是两种实现方式:

  1. 利用生成器函数实现range()
function* range(from, to) {
  while(from <= to) {
    yield from++;
  }
}

for (let num of range(1, 4)) {
  console.log(num);  
}
// 1
// 2
// 3
// 4

生成器函数可以迭代返回一个序列,而不是需要一次性返回整个数组。

  1. 利用递归实现range()
function range(from, to, arr=[]) {
  if(from > to) return arr;
  arr.push(from);
  return range(from+1, to, arr);
}

for (let num of range(1, 4)) {
  console.log(num);  
}
// 1
// 2
// 3
// 4

递归的方法实质上是不停地调用函数直到满足终止条件,此处终止条件是from > to。每次调用时将from加入数组,并将from加一递归调用函数,直到终止。这个实现方式相对而言比较简洁易懂。