以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 代码题
39. 手写range()
以下是两种实现方式:
- 利用生成器函数实现range()
function* range(from, to) { while(from <= to) { yield from++; }}for (let num of range(1, 4)) { console.log(num); }// 1// 2// 3// 4
生成器函数可以迭代返回一个序列,而不是需要一次性返回整个数组。
- 利用递归实现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
加一递归调用函数,直到终止。这个实现方式相对而言比较简洁易懂。