·函数定义时天生就能记住自己生成的作用域环境和函数自己,将它们形成一个密闭的环境,这就是闭包。不论函数以任何方式在任何地方进行调用,都会回到自己定义时的密闭环境进行执行。
·从广义上来说,定义在全局的函数也是一个闭包,只是我们没办法将这样的函数拿到更外面的作用域进行调用,从而观察闭包的特点。
·闭包是天生存在的,不需要额外的结构,但是我们为了方便观察闭包的特点,需要利用一些特殊结构将一个父函数内部的子函数拿到父函数外部进行调用,从而观察闭包的存在
闭包的用途
●可以在函数外部读取函数内部成员
·让函数内成员始终存活在内存中
<script> // 体会闭包 // 将一个内部函数拿到父函数的外面,观察是否还能调用父函数内部的变量 function outer() { // 形成闭包环境中的变量不是一成不变的,可以被更改 var a = 10; function inner() { console.log(a++); } // 将inner 函数作为返回值 return inner; } var inn = outer(); inn(); inn(); </script>