闭包的理解

1.闭包的概念

1.闭包:就是函数内部嵌套函数
function outer(){
            function inner(){
                
            }
        }

以上就构成了闭包
经典案例:

function outer(){
            let a=10
            function inner(){
                console.log(a);
            }
            return inner

        }
       let fn=outer() 
       fn()
输出10
2.作用域链

当在js中使用一个变量时,js引擎会优先在当前作用域寻找,如果找不到,就会在上一层作用域寻找,直到全局作用域,如果没找到会返回undefined

以上代码输出10,那outer()执行完毕,a为什么没有被销毁了?这就涉及到垃圾回收机制和闭包的特性了。

3.垃圾回收机制

正常情况下,如果一个函数执行完毕,则其内部的变量会被销毁

闭包的特性:内部函数没有被执行完成,外部函数变量不会被销毁

2.闭包的应用 :封装一段代码

let a=10
        let b=20
        function add(){
            return a+b
        }
        //如果我这样写,别人可以访问到我的a,和b,就可以修改他,
        //那么我们不希望别人可以访问到a,b就需要用到闭包,用函数将他们封装起来
        //立即执行函数,定义即执行()()
        let module=(function(){
            let a = 10
            let b = 20
            function add() {
                return a + b
            }
            return add
        })()
        //这样我们就只把add暴露给别人调用,而a,b为局部变量,外部无法调用
        module()

这样就利用闭包实现了模块化的概念

posted @   Kira的学习笔记  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示