闭包进阶:闭包在JS模块化中的应用

闭包:函数里包含函数,内部函数可以访问外部函数中的变量,并且该变量不会被内存回收。
模块化:将JS代码按功能分类,分成不同的模块,在需要的时候调用。保证了代码的整洁性和独立性。

JS模块化的写法按照时间顺序分别为:
1.原始写法

function m1(){
  //...
}

function m2(){
  //...
}

2.对象写法

var m = {
    m1: function () {
        //...
    },

    m2: function () {
        //...
    }
}

3.以上两种写法都会暴露函数内部的模块和变量,为了使函数内部不被破坏,可以使用结合闭包的函数写法:

var m = (function () {
    var i = 0
    function m1() {
        //...
    }

    function m2() {
        //...
    }
    return {
        m1:m1,
        m2:m2
    }
})()

首先用创建一个立即执行函数(IIFE),然后在里面定义模块化的函数,最后把它们return出来,此时变量m就变成一个对象,和第二种对象写法一样。
因为立即执行函数的原因,变量m在页面初始化的时候就被执行了,所以保护了变量m内部的函数不被改写。

 自定义input按钮选择样式
JS要不要写分号 
上一篇:自定义input按钮选择样式
下一篇:JS要不要写分号