很久之前就想写一篇关于闭包的博客了,但是总是担心写的不够完全.不够好,不管怎样,还是要把我理解的闭包和大家分享下,比较长,希望耐心看完. 定义 说实话,给闭包下一个定义是很困难的,原因在于javascript设计的时候并没有专门设计闭包这样一个规则,闭包是随着作用域链.函数可以作为一等公民这样的规则而诞生的. 尽管不能下一个很完美的定义,但是我们还是可以给闭包下一个尽量准确的定义. 闭包:当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行. 闭包是基于词法作