当前位置: 首页 > news >正文

前端知识点---闭包(javascript)

文章目录

  • 1.怎么理解闭包?
  • 2.闭包的特点
  • 3.闭包的作用?
  • 4 闭包注意事项:
  • 5 形象理解

1.怎么理解闭包?

函数里面包着另一个函数,并且内部函数可以访问外部函数的变量。

<script>
    function outer(){
        let count =0
        return function
        inner (){
            count++
            console.log("count为:"+count);
            
        }
    }
    let fn=outer()
    fn()
    fn()
    fn()
</script>

在这里插入图片描述

📌 关键点:

  • inner() 是闭包,它能访问 outer() 作用域里的 count。

  • 每次调用 fn(),count 的值都会保留,不会重置。

2.闭包的特点

特点说明
访问外部变量内部函数能访问外部函数的变量
变量不会消失外部函数执行完后,变量不会被销毁,因为被内部函数“记住”了
常用于记忆数据比如计数器、缓存、封装数据等

3.闭包的作用?

封闭数据,实现数据私有,外部也可以访问函数内部的变量

做缓存/记忆功能

在异步代码中保存上下文

4 闭包注意事项:

闭包会占用内存,变量不会被回收,要小心内存泄漏。

不要滥用闭包,大量使用可能影响性能。

5 形象理解

你开了一家面馆:

function 开饭店() {
  let 秘方 = "老坛酸菜配方"; // 这是私密变量,别人不能直接拿走

  return function 厨师() {
    console.log("我记得老板的秘方是:" + 秘方);
  };
}

let 厨师小王 = 开饭店(); // 开店完,返回了一个记得秘方的厨师

🍽️ 每次叫他做菜:

厨师小王(); // 我记得老板的秘方是:老坛酸菜配方
厨师小王(); // 我记得老板的秘方是:老坛酸菜配方

相关文章:

  • 滨州 网站建设seo优化服务公司
  • 大连市建设局网站成都企业seo
  • 做社区生意的网站软文代写
  • 网站建设需要服务器么北京seo站内优化
  • 聊城手机网站建设多少钱日本产品和韩国产品哪个好
  • 网站做微信支付线上推广外包公司
  • 【设计模式】创建型 -- 单例模式 (c++实现)
  • 最小K个数
  • ecovadis认证基本概述,ecovadis认证审核有效期
  • spring mvc 在拦截器、控制器和视图中获取和使用国际化区域信息的完整示例
  • 【零基础入门unity游戏开发——动画篇】新动画Animator的使用 —— AnimatorController和Animator的使用
  • 【杂谈】-小型推理模型:人工智能领域的新兴力量
  • Day2_Python tornado库2_post方法_上传图片文件
  • NumPy依赖库BLAS和LAPACK详细信息解析
  • UE5今日所学创建海洋+命名规范
  • 同时支持Vue2/Vue3的图片懒加载组件(支持懒加载 v-html 指令梆定的 html 内容)
  • 【Java面试系列】Spring Cloud微服务架构中的分布式事务实现与Seata框架深度解析详解 - 3-5年Java开发必备知识
  • .htaccess文件的组成、用法及作用详解
  • debian12 mysql完全卸载
  • Android 文件选择器
  • 如何在 Apifox 中与其他成员共用数据库连接配置
  • 探秘Transformer系列之(24)--- KV Cache优化
  • CSS 符号
  • 一文详解OpenGL环境搭建:Windows使用CLion配置OpenGL开发环境
  • 超详细解读:数据库MVCC机制
  • 【扩展KMP】P10634 BZOJ2372 music |省选-