JS 闭包

简介: JS 闭包


闭包:

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

示例代码

        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)
            }
            );
        })
目录
相关文章
|
4月前
|
JavaScript 前端开发
JavaScript 闭包:让你更深入了解函数和作用域
JavaScript 闭包:让你更深入了解函数和作用域
|
1月前
|
JavaScript 前端开发 安全
详细讲解JavaScript中的闭包问题附代码演示
闭包是JavaScript中一关键概念,它允许内部函数访问外部函数的作用域,从而实现变量的封装与持久化。本文通过示例解释了闭包的工作原理及其优势,如数据隐藏和私有变量的实现;同时也指出了闭包可能导致的内存占用问题,强调合理使用的重要性。
20 1
|
1月前
|
JavaScript 前端开发 Java
JavaScript中的闭包概念讲解
闭包是指函数内部嵌套另一个函数,并且内部函数引用了外部函数的数据(如变量或函数)。这样的内部函数被称为闭包。以示例代码为例,`fn1` 中有两个闭包函数 `fn2` 和 `fn3`,它们都可以访问并修改 `fn1` 中的变量 `a`。
12 1
|
11天前
|
自然语言处理 JavaScript 前端开发
|
19天前
|
自然语言处理 前端开发 JavaScript
前端进阶必读:JS闭包深度解析,掌握这一特性,你的代码将焕然一新!
【8月更文挑战第23天】闭包是JavaScript的一项高级功能,让函数能够访问和操作外部函数作用域中的变量。本文深入解析闭包概念、组成及应用场景。闭包由函数及其词法环境构成,通过在一个函数内定义另一个函数来创建。它有助于封装私有变量、维持状态和动态生成函数。然而,不当使用闭包可能导致内存泄漏或性能问题。掌握闭包对于实现模块化代码和成为优秀前端开发者至关重要。
29 0
|
30天前
|
JavaScript 前端开发 安全
JS 闭包(1)
JS 闭包(1)
23 0
|
30天前
|
存储 JavaScript 前端开发
JavaScript——对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
JavaScript——对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
28 0
|
3月前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包是函数访问外部作用域变量的能力体现,它用于封装私有变量、持久化状态、避免全局污染和处理异步操作。
【6月更文挑战第25天】JavaScript闭包是函数访问外部作用域变量的能力体现,它用于封装私有变量、持久化状态、避免全局污染和处理异步操作。闭包基于作用域链和垃圾回收机制,允许函数记住其定义时的环境。例如,`createCounter`函数返回的内部函数能访问并更新`count`,每次调用`counter()`计数器递增,展示了闭包维持状态的特性。
42 5
|
3月前
|
设计模式 自然语言处理 JavaScript
JavaScript进阶-函数表达式与闭包
【6月更文挑战第18天】JavaScript函数不仅是代码块,还是值,具备函数表达式和闭包等特性。函数表达式如匿名函数,可赋值、传参,但不提升,过度使用影响可读性。闭包允许访问外部作用域,即使父函数已结束,但不当使用可能导致内存泄漏。理解并妥善处理这些问题,如命名函数表达式、及时释放引用,能提升代码质量。通过实践深化对这些关键概念的理解至关重要。
28 2
|
2月前
|
存储 缓存 JavaScript
js 【详解】闭包
js 【详解】闭包
26 0