闭包、高阶函数

高阶函数
高阶函数是可以将函数作为参数,或是将函数作为返回值的函数。

什么是闭包?
闭包:提供给外部作用域访问内部作用域数据的方法叫做闭包。闭包是一个函数,闭包是JavaScript的高级特性,它的实现得益于高阶函数的特性:函数可以作为参数或者返回值。

示例的代码如下:

var foo = function(){
    var bar = function(){
        var local = "局部变量";
        return function (){
            return local;
        };
    };
    var baz = bar();
    console.log(baz());
};

一般而言,在bar()函数执行完成后,局部变量local将会随着作用域的销毁而被回收,但是注意这里的特点在于返回值是一个匿名函数,且这个函数具备访问local的条件。虽然在后续的执行中,在外部作用域中还是无法直接访问它,但是若要访问它,只要通过这个中间函数稍作周转即可。

闭包的问题在于:一旦有变量使用这个中间函数,这个中间函数将不会释放,同时也会使原始的作用域不会得到释放,作用域中产生的内存占用也不会得到释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值