为什么闭包这个概念看的七晕八素
- 闭包概念中的一些专业名词概念不清晰
- 作用域链:本质是一个指向变量对象的指针列表。函数的作用域链在函数调用完成后即被销毁。
- 变量对象:
- 全局变量对象(js运行时一直存在)。
- 活动变量对象(局部变量对象,函数执行完毕后销毁)。函数在调用时创建本地的活动对象加上函数定义时预创建的作用域链,形成一个新的用于执行函数的作用域链。
- 闭包的定义不清晰
- 函数定义时的作用域链到函数调用时仍然有效
- 有权访问另一个函数作用域中变量的函数
- 闭包带来的影响
- 闭包会影响到内存的占用
- dom对象的循环引用
作用域
- 函数作用域根据函数定义时确定。
- this关键字指向根据函数
作用域链
- 定义: 函数调用时新建对象存储变量对象
- 每次调用函数时,都会创建一个新的作用域链