对于闭包的一些理解

闭包是由函数和与其相关的引用环境组合而成的实体(wikipedia-闭包

闭包由两部分组成:一是函数,二是与这个函数相关的引用环境,即函数及函数内部能访问到的变量组成了一个闭包

(function fn(){
    var name="小明"
    function showName(){
        console.log(name)
    }
    showName()
})() //小明

函数fn是一个立即执行函数,变量 name 和函数 showName() 就组成了一个闭包,这里变量 name 所在的上下文就是上文所说的引用环境。
对上面的立即执行函数做一点改动:

function fn(){
    var name="小明"
    return function showName(){
        console.log(name)
    }
}
var yourName = fn()
yourName()

代码改动后,我们不在函数fn内部调用函数showName(),而是将showName()函数作为fn函数的返回值返回出来,同时,我们在函数外定义了一个变量yourName来引用函数fn(),因此yourName执行时就相当于fn()被调用,而showName()函数一样需要调用其外部的变量name,因此函数showName()和变量name就组成了一个闭包。

  • 闭包的作用
    闭包可以间接的访问一个变量,也就是可以使一个函数访问到另一个函数内部的变量。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容