简述闭包
定义
”函数“ 和 ”函数内部能访问到的变量“的总和,就是一个闭包。
作用
函数内部可以使用函数外部的变量,那函数外部怎样使用函数内部的变量呢?
闭包的最大用处是可以
- 读取隐藏在函数内部的变量
- 读取的过程也会让这些变量始终保持在内存里,不会被回收。
示例
1 | function foo(){ |
local 变量和 bar 函数就组成了一个闭包(Closure)。
retrun bar就是使用了这个闭包,达到了访问隐藏变量的效果。
1 | function createIncrementor(start){ |
function和start形成了一个闭包
return了这个function使用了闭包,可以让start一直存活在内存中。
总结
函数和变量形成一个闭包,return这个函数就使用了它。
闭包是 JS 函数作用域的副产品,它的作用大于概念。