js 闭包

js的闭包是一个前端工程师学习路上必须理解的一个东西,要理解闭包就必须理解变量作用域和生存周期

作用域,就是指变量的有效范围,比如函数的局部变量的有效范围就是函数内部,全局变量在全局作用域有效

生存周期:全局变量的生存周期是永久性的,除非我们主动销毁,但是普通的函数局部变量就不一样了,函数执行完毕就会销毁,确切的说当一个变量没有被引用的时候就会触发回收机制,具体可以去看看js的自动回收机制,这个对理解闭包很有帮助

var a=1;

function test(){

var b=2;

console.log(b);

}


test();

a变量的作用域是全局,而b变量的作用域只是在函数test里面

当函数执行完毕后b变量会触发自动回收机制,从而回收b变量的内存,而a变量是全局变量,生存周期是永久的

闭包的作用就是为了延续局部变量的生存周期,也可以用来封装不想暴露在全局的变量。

例如:

var test=(function(){

   function test2(){
     var b=2;

      console.log(b);
    }

   test2();

  return test2;

})()


上面的test2函数执行完毕后,变量b不会触发回收机制,因为可以通过test()来访问到b变量,也就是说还有指向b变量的索引

这就是闭包,利用垃圾回收机制的规则来达到延长局部变量的生存周期,从而达到封装一个不想暴露全局的变量的目的


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值