JavaScript中的闭包概念讲解

简介: 闭包是指函数内部嵌套另一个函数,并且内部函数引用了外部函数的数据(如变量或函数)。这样的内部函数被称为闭包。以示例代码为例,`fn1` 中有两个闭包函数 `fn2` 和 `fn3`,它们都可以访问并修改 `fn1` 中的变量 `a`。

闭包:

函数内部嵌套一个函数,内部函数引用外部函数的数据,内部函数称之为闭包

示例代码

        function fn1(){
   
            var a = 10 
            function fn2(){
   
                console.log(++a);
            }
            function fn3(){
   
                console.log(--a);
            }
            return {
   fn2,fn3}
        }
        let {
   fn2,fn3} = fn1()
        fn2() // 11
        fn3() // 10

在上面的代码示例中 存在两个闭包函数 fn2,fn3

闭包的生命周期:

  • 产生: 当嵌套的内部函数定义完毕之后 执行完之后 就产生
  • 死亡: 当嵌套的内部函数不被外界需要的时候,就被垃圾回收

闭包产生的条件是:

  1. 函数嵌套一个函数
  2. 内部函数引用外部函数的数据(变量 / 函数)
  3. 执行外部函数

闭包的作用:

  1. 延长局部变量的生命周期哦
  2. 让函数外部操作函数内部的数据( 变量 / 函数)

闭包的缺点:

  1. 容易造成内存泄漏(内存不能被释放,就会咋成ncxl)
  2. 手动释放null
    // 手动释放
    fn2 = null;
    fn3 = null;
    
 <div>哈哈哈哈</div>
 <div>嘿嘿嘿嘿</div>

  //想要获取到标签中的内容
        let divs = document.querySelectorAll("div"); divs.forEach((item) => {
   
            let innerhtml = item.innerHTML
            item.addEventListener("click", function () {
   
                // console.log(item.innerHTML);
                console.log(innerhtml)
            }
            );
        })
目录
相关文章
|
15天前
|
JavaScript 前端开发
js bom的概念
js bom的概念
23 1
|
23天前
|
JavaScript 前端开发
JavaScript BOM 的概念(浏览器对象模型)
JavaScript BOM 的概念(浏览器对象模型)
28 1
|
26天前
|
JavaScript 前端开发
JavaScript 事件的概念
JavaScript 事件的概念
44 1
|
27天前
|
JavaScript 前端开发 安全
详细讲解JavaScript中的闭包问题附代码演示
闭包是JavaScript中一关键概念,它允许内部函数访问外部函数的作用域,从而实现变量的封装与持久化。本文通过示例解释了闭包的工作原理及其优势,如数据隐藏和私有变量的实现;同时也指出了闭包可能导致的内存占用问题,强调合理使用的重要性。
20 1
|
7天前
|
自然语言处理 JavaScript 前端开发
|
15天前
|
自然语言处理 前端开发 JavaScript
前端进阶必读:JS闭包深度解析,掌握这一特性,你的代码将焕然一新!
【8月更文挑战第23天】闭包是JavaScript的一项高级功能,让函数能够访问和操作外部函数作用域中的变量。本文深入解析闭包概念、组成及应用场景。闭包由函数及其词法环境构成,通过在一个函数内定义另一个函数来创建。它有助于封装私有变量、维持状态和动态生成函数。然而,不当使用闭包可能导致内存泄漏或性能问题。掌握闭包对于实现模块化代码和成为优秀前端开发者至关重要。
27 0
|
26天前
|
JavaScript 前端开发 安全
JS 闭包(1)
JS 闭包(1)
23 0
|
26天前
|
JavaScript Java
JS 闭包
JS 闭包
21 0
|
26天前
|
存储 JavaScript 前端开发
JavaScript——对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
JavaScript——对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
27 0
|
2月前
|
存储 缓存 JavaScript
js 【详解】闭包
js 【详解】闭包
26 0