0
点赞
收藏
分享

微信扫一扫

浅学一下JavaScript中的闭包函数

佳简诚锄 2022-03-16 阅读 104

我相信大家都或多或少听过闭包函数,具体什么是闭包函数呢?

首先,我们先来看一段代码

var gloab
var a(){
    var aa = 123
    function b(){
        var bb = 234
        console.log(aa)
    }
    return b
}
var res = a()
res()

我们先来大胆做一下预测,这段代码执行的结果是 undefined还是123呢?想知道具体结果,我们耐着性子往下看(心急吃不了热豆腐)

想要完全搞清除闭包产生的原因,我们要先了解一个概念js的作用域特性

那么什么是js的作用域特性呢

接下来,我们继续解释上面这段代码,首先在执行var res 这个代码的时候,首先会产生全局GO对象

GO{
    gloab: undefined
    res: undefined 
}

在执行res = a()的时候,GO对象发生了更新,与此同时产生了AO对象

GO{
    gloab: undefined
    res: [Function a]
}
[a函数的AO对象]
AO{
    aa: undefined
    b : [Function b]
}

 当b函数定义的时候,它所能看到的是上面的AO和GO对象【也就是说:b函数是站在a函数的肩膀上看世界的】,接下来代码接着往下执行,随着b函数的定义,会产生b函数自己的AO对象

【b函数的AO对象】
AO{
    bb: undefined  234
}

除了这个AO对象,上面说到,b函数还能看到a函数的AO对象,全局的GO对象

当执行到res()函数的时候,a函数的返回值也就是b函数,所以res() 也就相当于执行了a函数中定义的b函数

看到这里,我相信大家懂了闭包函数的产生原因

希望我的这些对大家有帮助,我也是一个正要入门前端的小白,如果过程中有什么说的不对的地方,希望大家指出来。

最后,期待疫情快快结束~~~

举报

相关推荐

0 条评论