闭包

闭包:

由于作用域链的原因,父对象不能访问子对象的局部变量。

即父对象的所有变量,对子对象是可见的,反之则不成立。

解决方法:把子对象return,这样在父对象就可以访问(由于函数的作用域就是其声明时所在的作用域,与其运行时所在的作用域无关所以return后的函数的作用域不变

可以把闭包简单理解成“定义在一个函数内部的函数”

闭包最大的特点,就是它可以“记住”诞生的环境(即声明时所在的作用域链)

在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

闭包的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量始终保持在内存中

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

var result = f1();
result(); // 999

 外层函数每次运行,都会生成一个新的闭包,而这个闭包又会保留外层函数的内部变量,所以内存消耗很大。因此不能滥用闭包,否则会造成网页的性能问题

posted on 2017-06-12 16:20  我爱吃豌豆  阅读(122)  评论(0编辑  收藏  举报

导航