全局变量和局部变量
    全局变量可以重复使用但容易被污染,局部变量仅函数内可用,不会被污染但无法复用;

    闭包概念
    能够读取其他函数内部变量的函数
    定义在函数内部的函数,内部函数持有外部函数内变量的引用
    重用一个变量,又保护变量不被污染

    如何使用
    1. 用外层函数包裹要保护的变量和内层函数。
    2. 外层函数将内层函数返回到外部。
    3. 调用外层函数,获得内层函数的对象,保存在外部的变量中——形成了闭包。
    外层函数调用后,外层函数的函数作用域(AO)对象无法释放,被内层函数引用着。

    在一个函数中return一个使用外部变量的函数,原理是内部可以使用作用域外的变量,调用外部函数后,内部函数引用了外部变量,所以这个变量不会在使用后被销毁或回收。

    优缺点
    优点:可以重复一个不会被污染的变量;(工厂模式有使用)
    缺点:占用内存,解决,使用完即使释放,将变量赋值为null

    应用
    setTimeout不能传参
    封装能访问私有函数和私有变量的公共函数
    工厂模式

    https://blog.csdn.net/qq_21132509/article/details/80694517
    https://www.cnblogs.com/jiajialove/p/9049612.html