首页 > Web开发 > 详细

JS初识闭包

时间:2021-07-03 15:25:49      阅读:13      评论:0      收藏:0      [点我收藏+]

JS初识闭包

以如下代码为例

function f1(){

    var n=999;

    nAdd=function(){n+=1}

    function f2(){ // 函数f2根据js作用域链拥有对其父函数f1的变量与内部函数的访问圈钱 <1式>
      alert(n);
    }

    return f2; // 返回对函数f2的引用 <2式>

  }

  var result=f1(); //由于<2式>,全局变量result赋值为函数内部函数f2的一个引用
					//由于<1式>,result拥有对f1函数内部变量的访问权限

  result(); // 999

  nAdd(); // 函数内部定义时不加var定位为全局变量(仅在实现闭包后可调用)
			// nAdd()作为f1()的一个set赋值器

  result(); // 1000

// ***在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
// **在本例中,如果把父函数f2当作对象使用,闭包基本实现了使得对象拥有*私有属性*与*私有方法*的功能。
// *ps:由于f2赋值给全局变量result,且f2依赖于f1,因此f1与f2始终在内存中保留,而不会在调用结束后,被垃圾回收机制(garbage collection)回收。

JS初识闭包

原文:https://www.cnblogs.com/moyutime/p/14966018.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!