js 如果理解 闭包

 

1.定义:当一个内部函数能被其外部函数之外的变量引用时,就形成了一个闭包。

         也可以定义为:能够访问另一个函数作用域的变量的函数。

1.
//函数B为一个闭包
function A(){ //外部函数
    function B(){//内部函数
       console.log('Hello!');
    }
    return B;
}
var C = A(); //外部函数外的变量
C();// Hello !


2.
function outer() {
     var  a = '变量1'
     var  inner = function () {
            console.info(a)
     }
    return inner    // inner 就是一个闭包函数,因为他能够访问到outer函数的作用域
}

 

2.闭包应用的两种情况:函数作为返回值,函数作为参数传递。

1.
//返回值
function fn(){ 
    var max=10;
    return function bar(x){
             if(x>max){
                console.log(x)
             }
            }
} 
var f1 = fn()
f1(15)

2.
//传参
var max = 10;
var fn = function(x){
           if(x>max){
             console.log(x)
            }
         } 

(function (f){
    var max =100;
    f(15)}
 )(fn)

拓展相关知识点:

1. js 垃圾回收机制(GC)

原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。

2.执行上下文栈

执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境。当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文环境。处于活动状态的执行上下文环境只有一个。

具体查看:http://www.cnblogs.com/wangfupeng1988/p/3989357.html

 

3.具体详细描述参考资料

https://www.jianshu.com/p/26c81fde22fb

https://www.cnblogs.com/wangfupeng1988/p/3994065.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值