闭包和作用域链的简单理解

作用域链

作用域他是针对变量的,比如我创建了一个函数aa,函数里面有包含了一个函数bb,那么此时就存在了三个作用域。
全局作用域,和aa作用域. bb作用域,
全局作用域包含了aa的作用域,bb的作用域包含了aa的作用域
当aa在查找变量的时候会先在本身的作用域进行查找,找不到的话在到上一级bb的作用域进行查找,如果还没有呢,就向全局作用域区查找,这样就形成了一个作用域链。

闭包

理解闭包首先要理解JS的垃圾回收机制,
当一个函数执行完毕以后,作用域会被收回,如果形成闭包,执行完以后作用域不会被收回,
如果某个函数被他的父函数之外的一个变量引用的话,就会形成闭包,
闭包的作用呢,就是保存自己的私有变量,通过提供的接口(方法)给外部使用,但外部不能直接访问该变量
闭包的优点
1、保护函数内的变量安全,加强了封装性
2、避免全局变量的污染
3、私有成员的存在
闭包的缺点
1、闭包有一个非常严重的问题,那就是内存浪费问题,这个内存浪费不仅仅因为它常驻内存,更重要的是,对闭包的使用不当会造成无效内存的产生,而且容易造成内存泄漏。
当变量使用完以后,最好销毁变量,或者为它赋值null
特性:1:函数套函数;
1:内部函数可以直接使用外部函数的局部变量或参数
2、变量或参数不会被垃圾回收机制回收

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值