欢迎光临散文网 会员登陆 & 注册

千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip

2023-07-17 18:25 作者:星与虹之间  | 我要投稿

闭包

        // 函数在定义阶段会产生一个存储空间,并把存储空间的地址给函数名,在调用的时候会开辟一个执行空间(每次调用都不一样),在执行过后就会销毁

        // 所以在函数内部的变量在外部拿不到(销毁了)


        //  不让执行空间销毁 ===

        // 每一个函数会有一个存储空间, 执行空间会在函数执行完毕后就销毁,但是存储空间(只有一个)不会

        // 让一个执行空间不被销毁,返回引用类型即可,引用类型有引用空间,外面有变量接收了引用空间,我们执行空间不会销毁。

        // 闭包就是能够读取其他函数内部变量的函数,或者把闭包理解成 "定义在一个函数内部的函数"


        // 闭包形成的条件

        // 1.需要一个不被销毁的执行空间

        // 2.需要直接或者间接返回的返回一个函数(引用类型)

        // 3.就是内部函数需要访问到外部函数的私有变量    //return出内部函数后,外部也能够获得外部函数的私有变量

        // 4.这时可以把内部函数叫做外部函数的闭包函数


        //  闭包的特点

        // 1.作用域空间不销毁

        // 优点: 因为不销毁,变量也不会销毁,增加了变量的生命周期

        // 缺点: 因为不销毁,会一直占用内存,多了以后就会导致内存溢出(手动销毁设为null)

        // 内存溢出:一块内存一直被占用而得不到释放,影响浏览器的垃圾会收机制。

        // 2.可以利用闭包在一个函数外部访问函数内部的变量

        // 优点: 可以在函数外部访问内部数据

        // 缺点: 必须要时刻保持引用,导致函数执行栈不被销毁

        // 3.保护私有变量

        // 优点: 可以把一些变量放在函数里面,不会污染全局

        // 缺点: 要利用闭包函数才能访问,不是很方便

千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip的评论 (共 条)

分享到微博请遵守国家法律