对闭包的误解

本文详细解析了JavaScript中闭包的概念,纠正了常见的误解,并通过实例展示了如何利用闭包使变量在内存中长期驻留,避免全局变量污染,以及实现计数器功能。闭包允许内部函数访问并操作外部函数的变量,即使外部函数已经执行完毕。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对闭包的理解

1.其实之前我对闭包一直存在误解,一直以为是从另一个函数去拿到这个函数的值 误解
2.今天在看原生 又看到了闭包 对他重新做了理解

1.希望变量长期驻扎在内存当中(一般函数执行完毕,变量和参数会被销毁)

2.避免全局变量的污染

function  aaa() {
       var a = 1;
       a++;
       alert(a)
 }

aaa(); // 2
aaa(); // 2
aaa(); // 2
上面的函数不管执行几次,弹出的都是2,如果我们想弹出2/3/4 这样的结果呢?就需要用到闭包

函数嵌套函数,内部函数可以引用外部函数的参数和变量

function  aaa() {
    var a = 5;
    function bbb() {
        alert(a)
    }

    return bbb
}
var c = aaa();
c();
function aaa() {
        var a = 1;
        return function(){
            a++;
            alert(a)
        }
    }

    var bbb = aaa();
    bbb(); // 2
    bbb(); // 3
    bbb(); // 4

    // 函数表达式的写法
    var aaa = (function () {
        var a = 1;
        return function () {
            a++;
            alert(a)
        }
    })()

    aaa() // 2
    aaa() // 3
    aaa() // 4
``
闭包就是从外部的函数想要拿到内部函数的值  
好处就是不会被垃圾回收机制所回收
当内部函数 在定义它的作用域 的外部 被引用时,就创建了该内部函数的闭包 ,如果内部函数引用了位于外部函数的变量,当外部函数调用完毕后,这些变量在内存不会被 释放,因为闭包需要它们.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值