对于闭包的一些理解

2018-03-07  本文已影响0人  WWWKY

闭包是由函数和与其相关的引用环境组合而成的实体(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就组成了一个闭包。

上一篇 下一篇

猜你喜欢

热点阅读