闭包的理解

闭包函数是指有权访问另一个函数作用域中的变量的函数,(函数中的函数)

创建闭包函数最常见的方式是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,如下所示:

function fn1(){
    function fn(){
 
    }
    return fn;
}

这种函数的嵌套方式就是闭包函数,目的是为了:

1.可以在函数外部读取函数内部成员

2.让函数内成员始终存活在内存中,让函数整体不至于因为函数的执行完毕而被销毁。

但是还有这种写法:

(function(i){
    console.log(i);
})(i);

这种自调用的写法本质上来讲也是一个闭包函数。

通过这种闭包函数,我们可以有效的避免变量污染等问题,从而创建一个独立的作用域。

访问这个立即执行函数中的变量或者方法,我们就需要通过第二个括号将window这个全局的变量对象传入,并且将需要外部访问的变量或者函数赋值给window

(function (window){
    var a = 10; // 私有属性
 
    function show(){
        return a++;
    }
 
 
    function sayHello(){ // 私有方法
        alert("hello,world");
    }
    window.show = show;// 将show方法暴露在外部
})(window);

总结:

闭包的特点:

1函数嵌套函数,
2 函数内部可以引用外部的参数和变量
3 让函数内成员始终存活在内存中,让函数整体不至于因为函数的执行完毕而被销毁。
闭包的优点:

1 希望一个变量长期驻扎在内存中
2 避免全局变量的污染
3 私有变量存在
闭包的实现:

1 函数嵌套函数
2 外层函数返回内层函数
3 外面有一全局变量接受外层函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值