闭包的思想和实现逻辑

19 篇文章 1 订阅

闭包的思想和实现逻辑

闭包就是能够读取其他函数内部变量的函数。在js中,可以将闭包理解成“函数中的函数“

闭包的作用:

A、可以读取函数内部的变量

B、让这些变量的值始终保存在内存中。这是因为闭包的执行依赖外部函数中的比那辆,只有闭包执行完,才会释放变量所占的内存

使用闭包的注意事项

由于闭包会使得函数中的变量都被保存在内存中,内存消耗大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能会造成内存泄露。

解决方法:在退出函数之前,将不使用的局部变量全部删掉

闭包会在父函数外部,改变父函数内部变量的值。

​ 如果把父函数当做对象使用,把闭包当做公用方法,把内部变量当做私有属性,此时不要随便改变父函数内部变量的值。

所有回调函数 闭包进行虫洞穿越 所有的回调函数都是用了闭包闭包的虫洞穿越技术

//这是闭包吗   // 不是
function foo(){
    var a = 2
    function bar(){
        console.log(a) //2
    }
    bar()
}

foo()


//有虫洞穿梭的感觉 才是闭包




//真正的闭包
function foo(){
    var a =2 
    function bar(){
        console.log(a)
    }
    return bar
}
var baz = foo()

baz()  //2



//真正闭包


function foo() {
    var a =2 
    function baz(){
        console.log(a)
    }
    bar(baz)
}

function bar(fn) {
    fn()   //这也是传说中的闭包
}


foo()


// 真正闭包

var fn 
function foo() {
    var a =2 
    function baz() {
        console.log(a)
    }
    fn = baz //将baz 分配给全局变量
}

function bar() {
    fn() //这也能导致闭包
}



foo()

bar()  //2




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学而时习之不亦说乎。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值