了解闭包

  • 变量的作用域

变量作用域分为两种:全局变量和局部变量

  1. 函数内部可以使用全局变量
  2. 函数外部不可以使用局部变量
  3. 当函数执行完毕,本作用域的局部变量会销毁
  • 什么是闭包

闭包就是指有权访问另一个函数作用域中变量的函数。

简单理解就是一个作用域可以访问另外一个函数内部的局部变量

在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

例题

函数一执行,会形成一个全新独立的私有作用域。

当前函数执行,形成一个私有作用域a,a的上级作用域是谁,和他在哪执行的没有关系,和他在哪创建(定义)的有关系,在哪创建,他的上级作用域就是谁

  • 堆内存和栈内存的释放

堆内存:存储引用数据类型值(对象:键值对;函数:代码字符串)

栈内存:提供JS代码执行的环境和存储基本数据类型

堆内存释放

让所有引用堆内存空间地址的变量赋值为null即可(没有变量占用这个堆内存了浏览器会在空闲的时候把它释放掉)

栈内存释放

一般情况下,当函数执行完成,所形成的私有作用域(栈内存)都会自动释放掉(在栈内存中存储的值也会释放掉),但也有特殊情况:

  1. 函数执行完成,当前形成的栈内存中,某些内容被栈内存以外的变量占用了,此时不能释放(一旦释放,外面找不到原有的内容了)
  2. 全局栈内存只有在页面关闭的时候才会被释放掉
  3. 如果当前栈内存没有被释放,那么之前栈内存中存储的基本值也不会被释放

例题

 

  • 闭包的作用

  1. 保护作用:形成私有变量不受外界的干扰
  2. 保存作用:形成不销毁的栈内存,把一些值保存下来方便后面的调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值