为什么我的JavaScript函数赢了';结束?
因此,我有以下代码,从中我希望为什么我的JavaScript函数赢了';结束?,javascript,ecmascript-6,Javascript,Ecmascript 6,因此,我有以下代码,从中我希望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 tail
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 }
const repeat=(n,tailFn)=>{
for(设i=0;itailFn;
}
返回tailFn;
};
常数x=重复(2,x=>null);
console.log(x());//函数tailFn(){return\u tailFn}
console.log(x()());//函数tailFn(){return\u tailFn}
console.log(x());//函数tailFn(){return\u tailFn}
我做错了什么?查看它。您的函数只需将()=>tailFn
赋值给tailFn
三次,然后返回它。相反,如果n
不是0
,则应返回返回repeat(n-1,tailFn)
的函数,否则返回tailFn
const repeat=(n,tailFn)=>{
返回n!==0?()=>重复(n-1,tailFn):tailFn;
};
常数x=重复(2,x=>null);
console.log(x());//()=>重复(n-1,tailFn)
console.log(x()());//x=>null
console.log(x());//null
您创建了一个始终返回自身的函数
tailFn=()=>tailFn;
实际上,循环是没有意义的。它的行为类似于没有基本情况的递归函数。我不是在创建一个新函数tailFn
来返回旧的tailFn
?我想我明白了。我只需要将tailFn
保存在另一个变量中,并从新的tailFn
返回该变量;