1. 闭包是什么?

    闭包是一个外层函数,返回了一个内层函数,内层函数里面引用了外层函数的变量,导致外层函数调用后,被内层函数引用的相关变量没有被销毁。
    这些没有被销毁的变量会被挂载到内层函数的[[Scopes]]属性上;
    在碰到eval的时候,因为没法对它的引用做分析,所以它会打包整个作用域;
    闭包的出现,是为了解决子函数晚于父函数销毁的问题;

    1. 闭包和堆、栈的关系?

    因为内存函数上挂载了相关的变量存放在堆里面,而且还一直用不到,这样可能会导致内存泄漏。

    1. 哪些地方会产生闭包?

    事件监听函数、回调函数、setTimeout、setInterval

    1. 闭包有什么用途?

    防抖、节流、保存一些私有变量

    1. 相关资源