首页 > 其他 > 详细

关于闭包的理解

时间:2019-07-06 12:57:17      阅读:110      评论:0      收藏:0      [点我收藏+]

有时候我们想要访问函数内部的局部变量,但是正常情况下是访问不到的,

可以通过下面的方法获取到函数内部的局部变量

在函数内部,再定义一个函数。

function f1(){

    var n=999;

    function f2(){
      alert(n); // 999
    }

  }

在上面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1就是不可见的。

这就是Javascript语言特有的"链式作用域"结构(chain scope子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。

既然f2可以读取f1中的局部变量,那么只要把f2作为返回值,我们不就可以在f1外部读取它的内部变量了吗!

 

上面的代码中 f2函数就是闭包å

 闭包就是能够读取其他函数内部变量的函数。

由于在javascript中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理解成定义在一个函数内部的函数

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

关于闭包的理解

原文:https://www.cnblogs.com/wangwanglain/p/11141973.html

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