以下为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加一递归调用函数,直到终止。这个实现方式相对而言比较简洁易懂。