面试题:说说你对闭包的理解?

2023-11-17

闭包:一个函数和它的词法环境的引用捆绑在一起这样的组合就形成了闭包,比如一个函数A,return出去了一个函数B,那么这个函数B可以在外部访问函数A内部的变量,此时在就形成了一个函数B的变量背包,A函数执行结束,这个变量也不会被销毁,并且这个变量背包在函数A外部只能通过函数B来访问

闭包的原理:当前作用域访问上级作用域中的变量

闭包解决的问题:在函数执行结束后,函数作用域中的变量不会立即被销毁,在函数外部可以访问函数内部的局部变量

闭包产生的问题:垃圾回收机制不会立即清楚闭包产生的变量,于是造成内存泄漏,内存泄漏积累多了就会导致内存溢出

闭包的使用场景:模仿块级作用域,实现柯里化,在vue响应式数据observe中使用闭包,在构造函数中使用特权方法

扩展:什么是柯里化?

柯里化:给一个函数传入部分参数,此时就会返回一个函数去接受剩余的参数

没有使用柯里化

使用过

 

我们处理函数时如果希望函数功能单一(函数职责单一),用以下操作

总之,柯里化的好处:减少代码冗余,增强代码的可读性

缺点就是闭包带来的问题

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试题:说说你对闭包的理解? 的相关文章

随机推荐

  • 统计字符串中每个单词出现的个数和频率----四种方法

    统计每个单词出现的个数 三种方法 第一种如下 最简单的方式 sentance I can because i think i can 切片分隔成列表序列 用列表推导式表达 rresult word sentance split count
  • 认识数据中心两个关键指标RTO和RPO

    RTO和RPO是Business Continuity BC and Disaster Recovery DR 里面两个重要的概念 也是类似产品的Service Level Agreement SLA 的两个重要的衡量指标 Recovery
  • 观察者模式和事件通知备忘

    观察者模式和事件通知备忘 MessageBus instance post Notify PARKIN in bytes 这种是仿照Android的EventBus 用new的一个实例对象根据path反射调用其中的方法处理逻辑 要修改为 r
  • 【JVM】如何通俗地讲解JVM各个组成部分和其基本功能?

    类加载器 ClassLoader 运行时数据区 Runtime Data Area 执行引擎 Execution Engine 本地库接口 Native Interface 组件的作用 首先通过类加载器 ClassLoader 会把 Jav
  • (服务计算)在centos上编写golang的库,并进行测试

    首先是在centos上按照老师给的教程安装golang的相关内容 安装成功后进行后面的操作 首先是创建了一个hello go的文件 然后执行结果如下 可知安装基本正确 然后编写第一个库 首先创建包路径 然后创建名为reverse go的文件
  • 图形学基础1

    坐标系相关 uv可能会影响局部坐标系 如果light图和brdf图做卷积的时候 局部坐标系保持一致很重要 如下图 tangent是从外部模型文件进行加载的 切线空间采样并转世界坐标系 spherical to cartesian in ta
  • unity配置.asset文件

    unity配置数据可以XML 可以JSON unity自带的 asset文件也可以哦 而且能配置的数据类型也比较多 这里说明一下怎么在unity中生成 asset文件 首先来个脚本 using System using System Col
  • 【华为OD机试真题 python】报文解压缩

    题目描述 为了提升数据传输的效率 会对传输的报文进行压缩处理 输入一个压缩后的报文 请返回它解压后的原始报文 压缩规则 n str 表示方括号内部的 str 正好重复 n 次 注意 n 为正整数 0 lt n lt 100 str只包含小写
  • Dockerfile 中 CMD 为什么要避免使用 sh -c

    CSDN 中文章不一定能及时更新 欢迎点击前往我的博客查看最新版本 许盛的博客 Dockerfile 中的 CMD 命令 有 exec form 和 shell form 两种形式 具体区别可以参考 Dockerfile 中 CMD 写法的
  • CDN加速与DDOS防御

    一 目的 实现国外节点的访问加速 分区域分线路加速 防御来自竞争对手的DDos恶意攻击 常见的延缓性CC攻击和致命的大流量攻击 针对以上的加速策略和两种攻击方式进行一些防御方案的简单介绍 二 CDN加速 利用第三方的DNS智能解析分区域分线
  • Git学习之LFS

    什么是Git LFS git是程序员开发程序不可或缺的工具 有效的使用git能够极大的加快程序人员的开发效率 在开发比较轻量化的代码时 开发的速度不会受到git上传下载速度的影响 但是随着系统的复杂度增加 代码中关联到的文件越来越多 其中二
  • BGP实验(路由反射器,联邦,路由优化)

    目录 1 IP地址的规划 2 拓扑结构的搭建 3 IP地址的配置 4 静态路由的配置 5 动态路由的配置 6 EBGP的配置 7 IBGP的配置 8 路由反射器的配置 宣告 9 重发布和路由优化 10 测试 实验要求 实验步骤 1 IP地址
  • Ubuntu中调整终端terminal显示的缓冲区大小

    step1 step2 step3
  • hadoop单机版部署

    1 下载hadoop wget no check certificate https mirrors bfsu edu cn apache hadoop common hadoop 3 3 1 hadoop 3 3 1 tar gz 2 解
  • WebSocket详解

    WebSocket WebSocket是一种协议 它允许在客户端和服务器之间建立持久连接 实现双向实时通信 传统的http请求是客户端向服务器发起请求 服务器响应请求 而WebSocket解决服务器无法给客户端发送信息的问题 与HTTP协议
  • 2019年中国在线酒店预订行业发展分析报告

    核心摘要 单体酒店连锁化加速 OYO横空出世 鲶鱼效应显现 2019年以来中国单体酒店连锁化趋势加速推进 传统酒店集团锦江国际 华住 首旅如家等为应对OYO带来的挑战 大力推进轻加盟 快速扩张门店数量 此外 单体酒店快速连锁化给OTA平台的
  • geoda空间自相关分析_【方法笔记4】Geoda空间计量1 空间自相关

    以黑龙江省为例 1 导入shp格式地图 打开目标地图 点击第二行第4个数据按钮可以查看地图数据变量 2 数据合并 即将研究的各地级市数据与导入地图 捆绑 首先找到地图数据中可以唯一表征每个地级市的变量 如 其次将个人研究变量与上述可对各地级
  • Kubernetes 存活、就绪和启动探针

    Kubernetes主要有三中探针 存活 Liveness 就绪 Readiness 和启动 Startup 探针 kubelet 使用存活探针来确定什么时候要重启容器 例如 存活探针可以探测到应用死锁 应用程序在运行 但是无法继续执行后面
  • auth.log 频繁出现Cron: pam_unix (cron:session): session opened/closed for user root by (uid=0)

    This is my week of playing around with mail servers and I have been keeping an eye on the logs on a regular basis I noti
  • 面试题:说说你对闭包的理解?

    闭包 一个函数和它的词法环境的引用捆绑在一起这样的组合就形成了闭包 比如一个函数A return出去了一个函数B 那么这个函数B可以在外部访问函数A内部的变量 此时在就形成了一个函数B的变量背包 A函数执行结束 这个变量也不会被销毁 并且这