三十一、结合数组观察闭包
31.1 闭包
函数本身就是闭包。
31.1.1 函数可以记住自己定义时所处的外部环境,和内部语句,这就是闭包。
1 | <script> |

1 | <script> |

对于inner函数,外部环境 var a = 10;内部语句console.log(a),不管我们把inner函数那到哪里,它都可以记住自己所处的外部环境(变量的作用域)和自己的内部语句。
闭包是函数天生存在的性质,不需要任何结构,只不过我们需要借助这种形式体会倒闭包。
1 | <script> |

1 | <script> |
31.1.2 闭包并不是一成不变的,函数的每一次调用都会产生一个全新的闭包。
1 | <script> |
31.2 结合数组观察闭包
闭包:
函数天生存在的性质,能够记住声明时所处的外部环境和内部语句
数组:
[],数组中可以保存任何数据类型,将数组中每一项存放函数,函数内部可以书写序号
1 | // 声明数组,将一些函数存放在数组中 |

想要的结果为3,1。结果全部都是10
由于闭包的影响,任何一个函数i都是记住的10
函数天生存在闭包记住了i,也记住了内部语句return,当函数调用时,闭包不是一成不变的,i已经变成了10,所以所有函数的返回值都是10
解决方法:
通过IIFE解决
1 | // IIFE 函数在声明时立即调用 |
