js

  1. 闭包最大的特点,就是它可以“记住”诞生的环境,比如f2记住了它诞生的环境f1,所以从f2可以得到f1的内部变量。在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

闭包的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量始终保持在内存中,即闭包可以使得它诞生环境一直存在。请看下面的例子,闭包使得内部变量记住上一次调用时的运算结果。

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

var inc = createIncrementor(5);

inc() // 5
inc() // 6
inc() // 7
  1. 闭包的另一个用处,是封装对象的私有属性和私有方法。
function Person(name) {
  var _age;
  function setAge(n) {
    _age = n;
  }
  function getAge() {
    return _age;
  }

  return {
    name: name,
    getAge: getAge,
    setAge: setAge
  };
}

var p1 = Person('张三');
p1.setAge(25);
p1.getAge() // 25
  1. 外层函数每次运行,都会生成一个新的闭包,而这个闭包又会保留外层函数的内部变量,所以内存消耗很大。因此不能滥用闭包,否则会造成网页的性能问题。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zock阅读 1,084评论 2 6
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 要理解闭...
    青春前行阅读 286评论 0 0
  • 做累了做烦了的餐饮,再去做又能坚持多久?可是不做,我又能做什么?做什么都需要第一桶金。我终归是需要一份工作的。
    风嘻嘻阅读 216评论 0 0
  • 虽然我曾经是个科幻迷,但已经太久不再看科幻小说了。所以,对这部科幻影片,科技角度不作何评价。但从人性和哲学角度来说...
    AshleyStudy阅读 1,722评论 0 2
  • 我自卑的活着 我装作我什么都懂 我装作我一切都好 我轻巧的避开所有关于我的只言片语 我善解人意的面具下泪下如雨 我...
    山口淑子阅读 179评论 0 0