JavaScript 什么是闭包

JavaScript 什么是闭包?

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,创建的函数可以访问到当前函数的局部变量。
闭包有两个常用的用途。

1.使我们在函数外部能够访问到函数内部的变量。通过使用闭包,我们可以通过在外部调用闭包函数,从而在外部访问到函数内部的变量,可以使用这种方法来创建私有变量。

2.使已经运行结束的函数上下文中的变量对象继续留在内存中,因为闭包函数保留了这个变量对象的引用,所以
这个变量对象不会被回收。

其实闭包的本质就是作用域链的一个特殊的应用,只要了解了作用域链的创建过程,就能够理解闭包的实现原理。

优点:

1.变量长期驻扎在内存中

2.防止变量污染全局

// 现在你和同事开发同一个模块,然后你发现你们变量名大部分相同,为了管理变量,防止污染全局,可以闭包来解决这个问题
// 开发规范:init代表着入口、初始化的意思
let name = 'XYZ';
let init = (function () {
    let name = 'LM';

    function callName() {
        console.log(name);
    }

    return function () {
        callName();
    }
}());
let initXie = (function () {
    let name = '同事开发部分';

    function callName() {
        console.log(name);
    }

    return function () {
        callName();
    }
}());
init();
initXie();

输出结果:
LM
同事开发部分

缺点:

物极必反,函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题。解决方法是在退出函数之前,将不使用的局部变量全部删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值