作用域和闭包

闭包之我的理解

讲闭包之前先要弄明白一件事件, 函数的作用域是在函数声明的就确定了的.子级函数可以访问到父级函数的作用域,而父级不能访问到子级的作用域,这就是作用域链

闭包就是 在函数A内部再声明一个函数B,然后函数B就可以访问到函数A中的变量,然后在A中把B返回赋给一个全局变量,这个全局变量就可以访问到A的变量了.

Function A(){

Var a=100;

Function B(){

Return a;

}

Return B;

}

Var C=A();

//相当于var C=function B(){

Return a;

}

这时候 C是全局的 , 全局没有a,所以这个B中的a 应该是undefined的才对

但是由于闭包,即 函数B在声明的时候作用域已经确定在A的里面,所以最后 a=100

alert(C()); //100

闭包的两个作用:

//   1. 私有化数据

因为现在函数A里面的数据只有通过函数B才能访问到

//   2. 数据保持

闭包的数据会一直保持,不会被回收

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值