如何实现decrement生成的函数实例调用时返回值逐次递减?
实现decrement函数的方案
要实现这个需求,核心是利用闭包特性——让内部函数可以持续访问并修改外部函数作用域中的变量,从而保留每次调用后的状态。
代码实现
function decrement(number) { let currentValue = number; return function() { const returnVal = currentValue; currentValue--; return returnVal; }; }
代码说明
- 调用
decrement(number)时,会创建局部变量currentValue保存传入的初始数值,并返回一个匿名函数。 - 每次调用返回的匿名函数时,先记录当前
currentValue的值作为返回结果,再将currentValue递减1。这样就实现了第一次返回初始值,后续每次调用结果递减1的效果。
测试验证
let a = decrement(5); console.log(a()); // -> 5 console.log(a()); // -> 4 console.log(a()); // -> 3 console.log(a()); // -> 2 console.log(a()); // -> 1 console.log(a()); // -> 0
内容的提问来源于stack exchange,提问作者Kate Miller
相关产品推荐
相关产品推荐

