闭包

javaScript 有两种作用域:全局作用域和函数作用域(es6加上块级作用域)。函数内部可以直接读取全局变量,但是函数外部无法读取函数内部声明的变量,闭包就是解决这个问题来的。

闭包是能够读取其他函数内部变量的函数。在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。闭包其实只是一个绑定了执行环境的函数。

闭包的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量始终保持在内存中,即闭包可以使得它诞生环境一直存在。

function f1(){
  var n =999
  function f2(){
    console.log(n)
  }
  return f2
}
var result=f1()
result()//999

作用1.能够读取函数内部变量

function createIncrementor(start) {
  return function () {
    return start++;
  };
}

var inc = createIncrementor(5);

inc() // 5
inc() // 6
inc() // 7

作用2.闭包使得内部变量记住上一次调用时的结果

闭包可以看作是函数内部作用域的一个接口

执行上下文
JavaScript 标准把一段代码(包括函数),执行所需的的所有信息定义为:“执行上下文”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容