JavaScript——闭包(个人学习)

本文详细介绍了JavaScript中的闭包概念,包括它的定义、作用和优缺点。闭包允许内部函数访问外部函数的变量,即使外部函数已执行完毕。它在避免全局污染和数据隔离方面具有优势,但过度使用可能导致内存泄漏。解决内存泄漏的方法是将外部引用的闭包变量设为null。闭包常见于封装组件、与for循环和定时器的结合、DOM事件处理等场景。
摘要由CSDN通过智能技术生成


前言

闭包的构成:
由俩个部分构成:函数+以创建该函数的环境


一、闭包

1.什么是闭包

函数嵌套函数 内部的函数可以访问外部函数的变量,就形成一个闭包。

(function() {
    var a = 1;
    function add() {
        var b = 2
        var sum = b + a
        console.log(sum); // 3
    }
    add()
})()

add函数本身,以及其内部可访问的变量,即 a = 1,这两个组合在一起就被称为闭包。


2.闭包的作用

隐藏变量
闭包的一大特性就是内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后


3.闭包的优点

可以隔离作用域,不造成全局污染


3.闭包的缺点

由于长期驻留内存,长期这样会导致内存泄漏
增大内存的使用量

  • 如何解决内存泄漏:将暴露在外部的闭包变量置为null
  • 适用场景:封装组件,for循环和定时器结合使用,for循环和dom事件结合.可以在性能优化的过程中,节流防抖函数的使用,导航栏获取下标的使用

返回闭包的函数

function outer(){
     var val = 0;
     return function (){
           val += 1;
           document.write(val + "<br />");
     };
}
var outObj = outer();
outObj();//1,执行val += 1后,val还在
outObj();//2
outObj = null;//val 被回收
var outObj1 = outer();
outObj1();//1
outObj1();//2

总结

什么是闭包?

MDN的解释:闭包是函数和声明该函数的词法环境的组合。

按照我的理解就是:闭包 =『函数』和『函数体内可访问的变量总和』

说白了就是函数嵌套函数,内部函数能够访问外部函数的变量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值