闭包

2017-08-17  本文已影响0人  shadow123

闭包是什么

「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。简单说,就是一个函数用到了它外面的变量,这种用法叫闭包。

看个例子

function foo(){
  var local =1
  function bar(){
    local +=1
    return local
  }
  return bar
}
var func = foo()
func()

local 变量和 bar 函数组成了一个闭包。

闭包的作用

闭包常常用来间接访问一个变量,换句话说,就是隐藏一个变量。

假设我们在做一个游戏,在写其中关于「还剩几条命」的代码。

如果不用闭包,你可以直接用一个全局变量:

var lives = 30

万一有人把这个改了怎么办?用局部变量

但是用局部变量别人又访问不到,怎么办呢?

暴露一个访问器(函数),让别人可以「间接访问」

!function(){
  var lives = 30
  function award(){
    lives += 1
  }
  function die(){
    lives -= 1
  }
}()

lives 变量和 award 函数组成了一个闭包,lives 变量和 die 函数又组成了一个闭包。

上一篇 下一篇

猜你喜欢

热点阅读