闭包的理解

Posted 登陆太阳计划

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包的理解相关的知识,希望对你有一定的参考价值。

MDN 对闭包的定义是:闭包是指那些能够访问自由变量的函数,自由变量是指在函数 中使用的,但既不是函数参数又不是函数的局部变量的变量,由此可以看出,闭包=函 数+函数能够访问的自由变量,所以从技术的角度讲,所有 JS 函数都是闭包,
但是这是 理论上的闭包,还有一个实践角度上的闭包,从实践角度上来说,
只有满足以下两点,才称为闭包.
1、即使创 建它的上下文已经销毁,它仍然存在,
2、在代码中引入了自由变量,

闭包的应用:
1、模仿块级作用域。
2、保存外部函数的变量。
3、封装私有变量 单例模式:

var Singleton = (function(){ var instance;
 var CreateSingleton = function (name) { this.name = name; 
 if(instance) { return instance; }// 打印实例名字 this.getName();
  // instance = this;
  // return instance; return instance = this; }// 获取实例的名字 CreateSingleton.prototype.getName = function() { console.log(this.name) }return CreateSingleton; })(); // 创建实例对象 
  1 var a = new Singleton(\'a\'); // 创建实例对象 
  2 var b = new Singleton(\'b\'); 
  console.log(a===b);

以上是关于闭包的理解的主要内容,如果未能解决你的问题,请参考以下文章

javascript 匿名函数及闭包----转载

python中对 函数 闭包 的理解

一段代码理解闭包

(原创)JS闭包看代码理解

理解Python中的闭包

JS闭包的概念