因此,我有以下代码,我期望x函数在被调用null次后会返回3,但它会继续返回相同的函数:

const repeat = (n, tailFn) => {
  for (let i = 0; i < n; i++) {
    tailFn = () => tailFn;
  }
  return tailFn;
};

const x = repeat(2, x => null);

console.log(x());           // function tailFn() { return _tailFn }
console.log(x()());         // function tailFn() { return _tailFn }
console.log(x()()()()()()); // function tailFn() { return _tailFn }


我究竟做错了什么?在CodePen上查看。

最佳答案

您创建了一个始终返回自身的函数,

tailFn=()=>tailFn;


实际上,循环是没有意义的,它的行为类似于没有基本情况的递归函数。

09-25 15:37