闭包

作者: 慕容跳凯 | 来源:发表于2017-01-05 21:38 被阅读0次

Closures are functions that refer to independent (free) variables (variables that are used locally, but defined in an enclosing scope). In other words, these functions 'remember' the environment in which they were created. --- MDN

看不懂上面的英文这么办,下面是中文翻译

闭包是指那些能够访问独立(自由)变量的函数 (变量在本地使用,但定义在一个封闭的作用域中)。换句话说,这些函数可以“记忆”它被创建时候的环境。

关于闭包已经有很多很多的文章了,文章的最后会放一些链接,在这里我只写以下几点

  • 闭包的实现是因为Js中有函数作用域,变量查询是一级一级查询上去,直到根作用域也就是说在任何一级的作用域中都可以访问之前所有作用域连的变量,同时内存回收机制是不会回收还被引用的变量。
  • 闭包不是实现Js类的基础,但是可以通过闭包实现类的私有变量和私有函数
  • 闭包的性能很差,有时候可以绑定在prototype中(只可以访问this下的变量)
//在这个例子中firstName和LastName不想直接被外界访问,同时可以使用闭包使外界获取到值,
//同时函数尽量绑定在prototype上,所以getFullName绑定在prototype上,
//所以我个人认为在这样的情况下,一些用于访问私有变量的基础函数可以使用闭包,
//大多数类函数可以绑定在prototype中,通过可以访问私有变量的基础函数来实现访问私有变量
var Man = function(){
  var firstName = 'wang';
  var LastName = 'yuekai';
  this.getFirstName = function(){
    return firstName;
  }
  this.getLastName = function(){
    return LastName;
  }
}

Man.prototype.getFullName = function(){
  return this.getFirstName() + this.getLastName()
} 

其他文献
学习Javascript闭包(Closure)
闭包

相关文章

  • swift-闭包

    闭包 闭包定义 闭包简化 - 尾随闭包 闭包参数 闭包返回值 闭包的循环引用

  • 闭包,闭包,闭包

    1、这家伙到底是什么? 网上关于这个的讨论的太多了太多了,有各种的举例子,但是大部分还在寻找这个答案的小伙伴对于变...

  • 闭包-Closures [swift 5.1]

    闭包的语法 尾随闭包 闭包逃离 自动闭包

  • Day7 闭包(Closures)

    本页包含内容:• 闭包表达式• 尾随闭包• 值捕获• 闭包是引用类型• 逃逸闭包• 自动闭包 1、闭包表达式 闭包...

  • Python闭包

    闭包 = 环境变量 + 函数 调用闭包内部的环境变量 闭包的经典误区 闭包与非闭包实现人类走路 非闭包 闭包

  • 闭包(closure)

    ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...

  • swift- 闭包一

    /*• 闭包表达式• 尾随闭包• 值捕获• 闭包是引用类型• 逃逸闭包• 自动闭包*/

  • (9) python之闭包

    闭包闭包 = 函数 + 环境变量(函数定义的时候) 一个最简单的闭包 闭包不受外部变量影响 非闭包 闭包 闭包 只...

  • Swift-进阶 :闭包(二)逃逸闭包 & 非逃逸闭包

    本文主要分析逃逸闭包 、非逃逸闭包、自动闭包 逃逸闭包 & 非逃逸闭包 逃逸闭包定义 当闭包作为一个实际参数传递给...

  • javascript闭包详解

    跟我念 bi 闭 bao包 ,闭包的闭,闭包的包。。 闭包的简介 在计算机科学中,闭包(英语:Closure),又...

网友评论

      本文标题:闭包

      本文链接:https://www.haomeiwen.com/subject/wlzzvttx.html