打赏

javascript 闭包 通俗解释

代码段

function foo(){
            var a = 2;
            function bar(){
                console.log(a);
            }
            return bar;
        }
        var baz = foo();
        baz();

以上代码段就是闭包。

闭包使得函数可以继续访问定义时的词法作用域。

闭包实质:将内部函数传递到所在的词法作用域以外,内部函数仍然持有对原始定义作用域的引用。

 

once函数的实现:

 

function once(fn) {
                let called = false
                return function() {
                    if (!called) {
                        called = true
                        fn.apply(this, arguments)
                    }
                }
            }

 

posted @ 2017-10-20 14:51  孟繁贵  阅读(309)  评论(0编辑  收藏  举报
TOP