繁体   English   中英

为什么我的JavaScript函数不会结束?

[英]Why my JavaScript function won't end?

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

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三次,然后返回它。 相反,您应该返回一个函数,如果n不为0 ,则该函数返回repeat(n - 1, tailFn) ,否则tailFn

 const repeat = (n, tailFn) => { return n !== 0 ? () => repeat(n - 1, tailFn) : tailFn; }; const x = repeat(2, x => null); console.log(x()); // () => repeat(n - 1, tailFn) console.log(x()()); // x => null console.log(x()()()); // null 

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

tailFn=()=>tailFn;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM