javaScript闭包学习记录

最近复习js的时候看到闭包,简单记录下。

学习闭包需要知道的知识点–作用域

简单说就是全局变量和局部变量嘛,
在这里插入图片描述
区分全局变量和局部变量并不难,但这里有一点不要搞混了,也是很重要的,局部变量可以访问全局变量,但对于全局变量来说局部变量是无法访问不可获取的。进一步的说,局部变量的作用域内,它可以一层一层的向上访问各个作用域的全局变量,反之不行。这就是js的链式作用域

在这里插入图片描述
这里是三层作用yu的第三层作用域可以访问第一二层的作用域,反之无法访问,这就是链式作用域。

闭包是什么

我们已经知道,我们现在很难访问函数体内的变量,因为局部变量对于他的父作用域是不可见的,那么如果在这里插入图片描述
我们想要在output函数里输出b,肯定是不可行的,这时闭包就可以解决问题
在这里插入图片描述
这就是闭包,简单地说就是定义在一个函数内部的函数,而这个内部的函数可以把它父函数的变量输出,(可以读取其他函数内部变量的函数)
这里要说一下的是某学习网站给的闭包格式

var add = (function () {
    		var counter = 0;
   	 return function () {return counter += 1;}
})();

这种写法是js函数的自调用,不太容易看,其实就是把return简写了,有兴趣的可以自己查查。

闭包作用

1.获取其它函数内部变量
2 当一个函数执行完后,如果其内部定义了变量,那么函数运行结束,变量生存周期结束,变量内存被清除,而这个函数暂时不会,所以闭包就让函数内部的变量的生存周期跟这个函数一样了,这就可以让变量长时间存在于内存中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值