了解js的闭包

我们知道javaScript中变量可以是局部变量或者全局变量。函数可以访问由函数内部定义的变量,也可以访问函数外部定义的全局变量。但是我们在外部该怎么去访问到函数内部定义的函数呢,由此,我们就需要用到闭包。

首先:我们要知道闭包形成有三个必要条件:
(1) 一个函数A内部直接或者间接返回另一个函数B
(2) 函数B内部使用着函数A的私有变量
(3) 函数A外部有变量引用着函数B

function a() {
	var num = 100
	return function b() {
		console.log(num)
	}
}

var res = a()

闭包还有以下特点:(有利有弊)
(1) 延长了变量的声明周期
优点:变量会一直存在
缺点:需要一个不会销毁的函数执行空间,会一直存在内存中
(2) 可以访问函数内部的私有变量
优点:利用闭包函数可以访问函数内部的私有变量
缺点:执行空间不会销毁,会一直存在在内存中
(3) 保护私有变量
优点:保护私有变量不被外界访问
缺点:外界如果想访问私有变量,必须要利用闭包函数
由以上可以总结到:
当你需要延长变量的声明周期的时候,或者你需要访问某一个函数内部的私有数据的时候,你可以使用闭包函数来解决。但是当一段内存空间中有一个不会销毁的东西一直存在,就会出现内存占用,如果过多,就会导致内存泄漏,所以,要慎用闭包函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值