1.了解闭包
1.创建一个不会被销毁的作用域执行空间
2.直接或间接返回一个函数
3.外部有变量接收的返回的复杂数据
4.返回的这个函数使用了外部函数的局部变量(私有变量)
2.闭包的特点
1.在函数外部可以控制函数内部的变量
2.避免全局变量命名造成空间的污染
3.延长了变量的生命周期(多占用内存)
4.因为存在不会被销毁的空间,低版本浏览器会造成内存溢出
5.参数和变量不会被垃圾回收机制回收
3.闭包的应用场景
1.返回值 最常见的一种形式
2.函数赋值 一种变形的形式是将内部函数赋值给一个外部变量
3.函数参数 通过函数参数引用内部函数产生闭包
4.IIFE(匿名函数)
5.循环赋值
6.getter和set
7.迭代器(计数器)
8.触发事件
4.简述闭包的问题及优化
闭包的缺点:占用内层空间,大量使用闭包会造成 栈溢出
方案1:将闭包函数赋值为 null 可以销毁闭包
方案2:立即执行函数
特点:匿名函数 没有函数声明提升,没有被其他变量引用。