signed

QiShunwang

“诚信为本、客户至上”

有关闭包的一些考题整理

2021/6/3 14:07:39   来源:

实现一个foo函数

题目:

// 实现一个foo函数, 返回自身被调用的次数 可以这么使用:
a = foo();
b = foo();
c = foo();
// 此时  a 的值是1;b的值是2;c的值是3;
foo.reset();
d = foo(); // d的值是1, 说明foo重新开始计数;

答案:

 const foo = (function(){
    let counter = 1;
    function increase(){
        return counter++;
    }
    increase.reset = function() {
        counter = 1;
    }
    return increase;
})()

来源:

字节跳动二面