闭包

如下:

var local = 'foo'
function bar() {
  console.log(local);
}

「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。

闭包是js函数作用域的副产品。正是因为js函数内部可以使用外部的变量,所以恰好满足了闭包的定义。

  1. 常见的”函数套函数“的做法,是为了让local成为局部变量,以达到隐藏变量的目的
  2. return bar 或者 window.bar = bar的做法,是为了让函数外部能访问到这个bar函数。

常用于:

  • 间接访问一个变量(隐藏变量)
function(){

  var lives = 50

  window.plus = function(){
    lives += 1
  }

  window.minus = function(){
    lives -= 1
  }

}()

你可能感兴趣的:(闭包)