← 返回首页
Javascript基础教程(四十四)
发表时间:2021-07-04 15:35:50
闭包的应用

闭包有什么实际应用呢?

上小节我们分析了,闭包的特征就是内部函数使用了外部函数的变量,使得内部函数没有执行完成前,外部函数变量不会被销毁。因此闭包典型应用就是可以封装一段代码,实现模块化的功能。

实例:

<script>
    let module =(function(){
        let a = 10;
        let b = 7;
        function add(){
            return a+b;
        }

        function sub(){
            return a-b;
        }

        function multi(){
            return a*b;
        }

        function div(){
            return a/b;
        }

        return{
            add: add,
            sub: sub,
            multi: multi,
            div :div
        }
    })();

    console.log(module.add());
    console.log(module.sub());
    console.log(module.multi())
    console.log(module.div());

</script>

这个模式在JavaScript 中被称为模块。我们仔细研究一下这些代码。 首先,module() 是一个函数,必须要通过调用它来创建一个模块实例。如果不执行外部函数,内部作用域和闭包都无法被创建。其次,module() 返回一个对象,这个返回的对象中含有对内部函数而不是内部数据变量的引用。我们保持内部数据变量是私有变量。可以将这个对象类型的返回值看作是模块的公共API,彼此之间是独立的,互不影响。