javascript闭包原理和面试题

 1.可以在函数的外部访问到函数内部的局部变量 。

2.让这些变量始终保存在内存中,不会随着函的结束而自动销毁。


    <script>
        function a() {
            function b() {
                var bb = 234;
                console.log(aaa); //123
            }
            var aaa = 123;
            return b;
        }
        var demo = a();
        demo();

        // 闭包:函数中会出现的一个现象,将函数(a)内部的函数(b)返回到函数(a)外部去
        // 形成闭包后,函数外部可以使用函数内部的变量、数据。
        // 闭包一旦形成,作用域不会被释放,一直占用内存,内存泄漏(被占用)。
    </script>
<script>
        function sum() {
            var count = 0;
            return function() { // 函数是在sum中被定义的
                count++;
                return count;
            }
        }
        var demo = sum();
        console.log(demo()); //1
        console.log(demo()); //2
        console.log(demo()); //3
        console.log(demo()); //4
        console.log(demo()); //5
        console.log(demo()); //6
        
        //在形成闭包后,作用域一直存在不被销毁,返回值会不断增加
</script>

通俗的来讲就是别人家有某个东西,你想拿 但是权限不够(不打死你才怪),但是你可以跟  家中的小孩子套近乎,通过他拿到。

这个家就是局部作用域,外部无法访问内部变量,孩子是返回对象,对家里的东西才有访问权,借助孩子你才能间接访问内部变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值