首页 > 其他分享 >闭包及原理

闭包及原理

时间:2024-02-21 20:22:22浏览次数:20  
标签:闭包 function return var 原理 getData fn

概念

一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。大白话也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域 点击查看代码

function fn() {
  var a = 10
  return function getData() {
    return a
  }
}

var getData = fn()
var a1 = getData()

原理

闭包的原理就是利用作用域链的特性,首先在当前作用域访问数据,当前作用域访问不到,则向父级访问,父级也没有,一直找到全局。

作用

数据私有化,防止污染全局

var a = 10
function fn() {
  console.log(a)
}
console.log(a)

将闭包代码修改后也同样可以访问到 a 数据,但是此时 a 的数据在全局,全局可以直接对 a 数据进行修改,而且全局也多了一个 a 这个数据,要尽量避免直接将数据直接放到全局

缺点

闭包会造成内存泄漏,因为闭包的数据没有被回收

function fn() {
  var a = 10
  return function getData() {
    return a
  }
}

var getData = fn()
var a1 = getData()

解决方案:将全局指向的函数重新置为 null,利用标记清除的特性

function fn() {
  var a = 10
  return function getData() {
    return a
  }
}

var getData = fn()
getData = null

标签:闭包,function,return,var,原理,getData,fn
From: https://www.cnblogs.com/gu723411/p/18026134

相关文章

  • 交换机的工作原理
    交换机的工作原理如下: 1.交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中。 2.交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由那个端口进行转发。 3.如果数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转......
  • 最简单的深拷贝和浅拷贝(原理)
    拷贝:其实就是一个对象复制给另外一整个对象,让对象相互不影响。对象的拷贝又分为浅拷贝和深拷贝对象的浅拷贝:浅拷贝是指只复制对象的第一层属性,如果对象的属性值是引用类型(如对象、数组等),则复制的是引用,而不是真正的拷贝。对象的深拷贝:深拷贝是指在复制对象时,不仅复制对象本身,还......
  • 模板匹配里的一些数学原理
    模板匹配里的一些数学原理我们知道,在openCV里,模板匹配中匹配度的计算公式有三类。SQDIFF、CCORR、CCOEFF。下面我们来简单介绍一下这三类计算方法,并比较其不同之处。openCV里的模板匹配SQDIFFSQDIFF全称SumofSquaredDifference(SSD),即差的平方和。其离散形式为:\[E(\v......
  • 面试官让我讲讲MySQL三大核心日志实现原理
    本文分享自华为云社区《面试必问|聊聊MySQL三大核心日志的实现原理?》,作者:冰河。MySQL几乎成为互联网行业使用的最多的开源关系型数据库,正因如此,MySQL也成为各大互联网公司面试中必问的数据库,尤其是MySQL中的事务实现机制和三大核心日志的实现原理。今天,我们就重点聊聊MySQL三......
  • 单片机电容式触摸按键原理
    一、前言图1触摸按键应用触摸按键因其外观简洁,科技感强,在电子产品,家电上经常见到。二、触摸按键的原理触摸按键的原理是基于电容感应技术或压力感应技术实现的。以下是这两种技术的原理介绍:1.电容感应技术:触摸按键常见是电容感应式,可以穿透绝缘材料外壳8mm(玻璃、塑料等......
  • 硬件消抖(电容式)原理根源分析
    前言:(开发板上四个管脚的独立按键真实存在的现象)由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场......
  • 对于压缩原理和部分压缩方法的认识(《程序是怎样跑起来的》第6章)
    在阅读过后《程序是怎样跑起来的》第6章后,我了解了关于文件压缩的相关知识。文件压缩指的就是将文件中重复的字符用“数据×出现次数”的方式表达出来,就如书中所说的AAABBDDFFF这样10个字符用A×3+B×2+D×2+F×3=A3B2D2F3来表示,这是RLE算法的压缩方式,但是这种算法也存在一定的缺陷......
  • Python异步编程原理篇之IO多路复用模块selector
    selector简介selector是一个实现了IO复用模型的python包,实现了IO多路复用模型的select、poll和epoll等函数。它允许程序同时监听多个文件描述符(例如套接字),并在其中任何一个就绪时进行相应的操作。这样可以有效地管理并发I/O操作,提高程序的性能和资源利用率。本篇主要......
  • 记录事业编考试提供的照片审核工具引发对其原理的探究
    记录事业编考试提供的照片审核工具引发对其原理的探究考研结束之后,对于结果已经知其一二了,这半年多并没有准备的那么充分,所以需要有一个过渡,为接下来的工作计划做打算,针对应届生,事业编制就是一个不错的选择。早上九点,事业编制开始报名,进入报名页面,就是常见的报名信息填写,其中......
  • 路由器工作原理
    路由器工作原理主要包括路由选择和数据传输两部分1.路由选择:路由器根据路由表选择最佳的路径,将数据包传输到目标地址。路由表是路由器的核心组件之一,它存储了网络地址和最佳路径的映射关系。路由表是根据路由协议生成的,常见的路由协议有包括RIP、OSPF和BGP等。2.数据传输:......