再谈闭包-到底是炫技还是真的好用

什么是闭包

其实闭包是一个大家都耳熟能详但却说不清它到底是什么;

其实从var的历史到转变使用let 和const 就可以看出闭包是个没有完善的漏洞,而恰好能为开发带来一些好处;

说好处其实是有好有坏;

1,函数里边还有函数,就极容易形成闭包(),开发时要特别注意:

内部函数使用了外部函数的变量,内部函数又不小心将外部变量的函数借了出去,这时候javascript引擎会认为这个变量还在使用,就把这个内部函数所涉及的原先外部函数的执行期上下文保存了下来(‘不销毁’);

2,利用闭包的特性可以让开发更加顺心:

小项目不太明显,遇到大项目,多人开发时就极容易遇到变量被覆盖的问题,这时候就能利用闭包的特性来做变量私有化,互相不影响

闭包的应用

众说纷纭大家都在抽象的讲,这里有个例子,每个fn(),传入颜色就能改变背景颜色

function n() {
    let num=1;
    return function () {
        num++;
        console.log(num);
    }
}

let count = n();
let count2=n();
//闭包的经典案例


总结

单就上边那个案例来讲,count,count2就是闭包函数,这两个函数可以访问别人访问不到的变量”num“,

成为count私有的变量,也就是闭包存在的意义之一;

游戏中经常使用到闭包,例如游戏中的npc,每个npc都有自己的逻辑;

 

 

2
分享到:

评论0

请先

没有账号? 忘记密码?