转行前端(JS篇4):闭包作用之保护

308 阅读1分钟

闭包:

函数执行形成一个私有的作用域,保护里面的私有变量不受外界的干扰,这种保护机制称之为“闭包”

市面上的开发者认为闭包是:形成一个不销毁的私有作用域(私有栈内存)才是闭包

闭包:柯里化函数

function fn(){return function(){} }var f = fn();

闭包:惰性函数

var utils=(function(){return{}})();  

闭包项目实战应用

真实项目中为了保证JS性能(堆栈内存的性能优化),应该尽可能的减少闭包的使用(不销毁的堆栈内存是耗性能的)

1、闭包具有保护作用:保护私有变量不受外界的干扰

在真实项目中,尤其是团队协作开发的时候,应当尽可能的减少全局变量的使用,以防止相互之间的冲突(”全局变量污染“),此时我们完全可以把自己这一部分的内容封装到一个闭包中,让全局变量转换为私有变量

function(){var n=12;function fn(){}})();

不仅如此,我们封装类库插件的时候,也会把自己的程序都存放到闭包中保护起来,防止和用户的程序冲突,但是我们又需要暴露一些方法给客户使用,这样我们如何处理呢?

1、JQ这种方式:把需要暴露的方法抛到全局

function(){
function jQuery(){
//....
}
//....
window.jQuery=window.4=jQuery;//=>把需要供外面使用的方法通过window设置属性的方式暴露出去
})

2、闭包具有保存作用:形成不销毁的栈内存,把一些值保存下来,方便后面的调取使用