我们在词法作用域的环境下写代码,而其中的函数也是值,可以随意传来传去。
    当函数可以记住并访问所在的词法作用域,即使函数是在当前词法作用域之外执行,这时就产生了闭包。

    如果没能认出闭包,也不了解它的工作原理,在使用它的过程中就很容易犯错,比如在循环中。
    但同时闭包也是一个非常强大的工具,可以用多种形式来实现模块等模式。
    模块有两个主要特征:
    (1)为创建内部作用域而调用了一个包装函数;
    (2)包装函数的返回值必须至少包括一个对内部函数的引用,这样就会创建涵盖整个包装函数内部作用域的闭包。

    现在我们会发现代码中到处都有闭包存在,并且我们能够识别闭包然后用它来做一些有用的事!