JS如何实现一个方法内自增变量?

西红柿
  • 279
代码
const fun1 = () => {
 // 这里有一些我不会写的代码
 return fun2()
}

const fun2 = (val) => {
   return val
}

fun1(); // 这里输出1
fun1(); // 这里输出2
fun1(); // 这里输出3
// ...

请问 fun1 里面应该怎么写?

评论
阅读 1.9k
2 个回答
✓ 已被采纳
function fun1 () {
 var num = 0;
 return function () {
  num++;
  console.log(num);
 }
}
const fun2 = fun1();
fun2(); // 这里输出1
fun2(); // 这里输出2
fun2(); // 这里输出3

使用闭包的形式就可以实现

const fun1 = () => {
    fun1.count = fun1.count || 0;
    fun1.count++;
    
    return fun2(fun1.count);
}

这样?

宣传栏