闭包 是指内部函数总是可以访问其所在的外部函数中声明的变量和参数,即使在其外部函数被返回(寿命终结)了之后。
    例如:

    1. function makeFunc() {
    2. let name = "Rose";
    3. function displayName() {
    4. alert(name);
    5. }
    6. return displayName;
    7. }
    8. let myFunc = makeFunc();
    9. myFunc();

    在一些编程语言中,一个函数中的局部变量仅存在于此函数的执行期间。函数执行完毕后,其内部变量就不能再被访问。但在这个例子中,函数makeFunc执行完毕后,其内部变量name依然能被访问。就是因为JavaScript中的函数形成了闭包。
    闭包的用途是间接访问一个变量或隐藏一个变量。这些变量的值始终保持在内存中,不会在外层函数调用后被自动清除。
    闭包的缺点是消耗内存,影响页面性能,严重者造成内存泄漏;闭包还会在父函数外部,改变父函数内部变量的值。所有要格外小心。