Contents
  1. 1. 定义
  2. 2. 作用
  3. 3. 示例
  4. 4. 总结

定义

”函数“ 和 ”函数内部能访问到的变量“的总和,就是一个闭包。

作用

函数内部可以使用函数外部的变量,那函数外部怎样使用函数内部的变量呢?
闭包的最大用处是可以

  • 读取隐藏在函数内部的变量
  • 读取的过程也会让这些变量始终保持在内存里,不会被回收

示例

1
2
3
4
5
6
7
8
9
10
function foo(){
var local = 1
function bar(){
local++
return local
}
return bar
}
var func = foo()
func()

local 变量和 bar 函数就组成了一个闭包(Closure)。
retrun bar就是使用了这个闭包,达到了访问隐藏变量的效果。

1
2
3
4
5
6
7
8
9
function createIncrementor(start){
return function(){
return start++
}
}
var inc = createIncrementor(5)
inc() //5
inc() //6
inc() //7

function和start形成了一个闭包
return了这个function使用了闭包,可以让start一直存活在内存中。

总结

函数和变量形成一个闭包,return这个函数就使用了它。
闭包是 JS 函数作用域的副产品,它的作用大于概念。

Contents
  1. 1. 定义
  2. 2. 作用
  3. 3. 示例
  4. 4. 总结