闭包进阶:闭包在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要不要写分号