Javascirpt闭包(closure)

126 阅读1分钟

阮一峰老师解释的关于闭包的关键点,比较通俗易懂,此处f2是闭包函数:

看了一些文章,我的理解是:由于f1返回的是一个函数,当f1被调用的时候,就创建了f2这个闭包,如果f2没有引用f1的内部变量,那f2在创建完f1后就与f1是相互独立的关系,f1会被释放掉。但f2闭包引用了f1的内部变量,所以f1无法释放掉,第二次调用f2时,f2往父作用域找到的还是那个没有被释放掉的内部变量。

MDN中对闭包的定义:闭包是由函数以及创建该函数的词法环境组合而成。这个环境包含了这个闭包创建时所能访问的所有局部变量

参考自:

阮一峰老师的博客:www.ruanyifeng.com/blog/2009/0…

MDN: developer.mozilla.org/zh-CN/docs/…