首页 > 其他分享 >闭包

闭包

时间:2023-06-12 18:24:13浏览次数:34  
标签:闭包 function 函数 newArr 内存 var log

1、定义

指能够访问另一个函数作用域中的变量的一个函数(定义在一个函数内部的函数)

2、作用

(1)防止全局污染

(2)利用其可突破作用域链,将函数内部的变量和方法传递到外部,让外部函数可以访 问到内部函数的变量和方法

3、优点

(1)形成闭包的函数在执行之后,不会被回收,依旧存在内存中

(2)私有变量化,适合模块化开发

4、缺点

变量不会回收,耗费内存,容易造成内存泄漏

【内存泄漏:浏览器无法回收代码的内存,比如说一个对象或者一个数组】

5、应用场景:(防抖和节流)

for (var i = 0; i < 3; i++) {
  setTimeout(function log() {
    console.log(i); // => ?
  }, 1000);
}
for (let i = 0; i < 3; i++) {
  setTimeout(function log() {
    console.log(i); // => ?
  }, 1000);
}
function fun() {
    var arr = []
    // for循环中,每次都是往空数组中放入一个匿名函数
    // [function(){},function(){},function(){}]
    for (var i = 0; i < 3; i++) {
        arr[i] = function () {
        console.log(i)
    }
}
// 循环结束后i为3
// i=3
return arr 
//[function(){},function(){},function(){}]
}
var newArr = fun()
newArr[0]()
newArr[1]()   
newArr[2]()
         

 

标签:闭包,function,函数,newArr,内存,var,log
From: https://www.cnblogs.com/le-fang/p/17475790.html

相关文章

  • 什么是JS中的闭包?
    摘抄自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/ClosuresClosuresA closure isthecombinationofafunctionbundledtogether(enclosed)withreferencestoitssurroundingstate(the lexicalenvironment).Inotherwords,aclosuregivesyou......
  • 【Python查漏补缺(一)】闭包和装饰器
    闭包的构成条件:在函数嵌套(函数里面再定义函数)的前提下内部函数使用了外部函数的变量(还包括外部函数的参数)外部函数返回了内部函数简单闭包deffun_out(num1):  #定义外部函数  deffun_inner(num2):    #内部函数使用了外部函数的变量  ......
  • 闭包的理解
    看到知乎的一个回答,觉得非常不错,抄下来备份记录引用自知乎用户回答: 作者:赵者也链接:https://www.zhihu.com/question/21865351/answer/2142927643来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。简单。闭包是编程语言的一种功能,为了解决这么......
  • uniapp中js中的闭包使用
    问题:在uniapp里面,使用闭包函数处理的时候,会导致$this不能全局使用。 解决方案:第一种代码写法(以循环为例):constobj={a:1,b:2,c:3}varkeys=Object.getOwnPropertyNames(obj)keys.forEach(function(key){console.log(key+'--......
  • 《深度剖析CPython解释器》16. Python函数机制的深度解析(第三部分): 闭包的底层实现
    https://www.cnblogs.com/traditional/p/13580694.html楔子上一篇我们看了函数是如何调用的,这一次我们看一下函数中局部变量的访问、以及闭包相关的知识。函数中局部变量的访问我们说过函数的参数和函数内部定义的变量都属于局部变量,所以它也一样是通过静态的方式进行访问。......
  • python为什么要使用闭包
    为什么要使用闭包闭包避免了使用全局变量,此外,闭包允许将函数与其所操作的某些数据(环境)关连起来。这一点与面向对象编程是非常类似的,在面对象编程中,对象允许我们将某些数据(对象的属性)与一个或者多个方法相关联。一般来说,当对象中只有一个方法时,这时使用闭包是更好的选择。来看一个例......
  • C# 委托和闭包
    委托是什么大部分的解释是委托是一个对方法的引用,可以不用自己执行,而是转交给其他对象。就好比每天都有一个黄毛旅行者,给npc做委托任务一样,npc并不是自己去做任务。于是我们可以有以下代码,delegate就是声明一个委托,它的作用是调用sum方法 //Seehttps://aka.ms/new-conso......
  • 继承/闭包打卡
    01继承1.继承引入-是类与类之间的关系子类继承父类子类就拥有父类的属性和方法【重点】2.es5:继承语法 1.call函数继承-构造函数继承(继承属性)在子类的构造函数中使用父类构造函数的call函数实现继承Person.call(this,name,age)//构造函数继承......
  • Python 2-06 闭包
    闭包Closures嵌套函数(nestedfunction),内函数引用了外函数的临时变量,并且外函数返回内函数的引用,这样就构成了一个闭包。defouter():x,y,z=10,'abc',[1,2]definner():print(x,y)returninnerf=outer()print(f.__closure__)#celltuple......
  • Python高级编程技巧:函数式编程和闭包
    Python是一种非常流行的编程语言,可以用于各种应用领域,如Web开发,人工智能,数据科学等。其中,函数式编程和闭包是Python编程中非常重要的概念,本文将深入探讨这两个主题。函数式编程Python是一种多范式语言,既支持面向对象编程,也支持函数式编程。函数式编程的一大特点是强调函数的纯洁性......