首页 > 试题广场 >

说一说你对闭包的理解?

[问答题]
说一说你对闭包的理解?
闭包形成的原理:作用域链,当前作用域可以访问上级作用域中的变量 闭包解决的问题:能够让函数作用域中的变量在函数执行结束之后不被销毁,同时也能在函数外部可以访问函数内部的局部变量。 闭包带来的问题:由于垃圾回收器不会将闭包中变量销毁,于是就造成了内存泄露,内存泄露积累多了就容易导致内存溢出。 加分回答 闭包的应用,能够模仿块级作用域,能够实现柯里化,在构造函数中定义特权方法、Vue中数据响应式Observer中使用闭包等。
发表于 2022-04-18 13:29:44 回复(0)
1. 概念:函数嵌套函数,里部变量能访问外部变量,这个变量称为自由变量 2. 解决的问题:保存变量 3. 带来的问题:会造成内存泄漏问题 4. 闭包的应用:防抖节流
发表于 2022-04-18 11:18:43 回复(0)
1.内层函数引用外层函数中变量,这些变量的集合就是闭包 2.通过作用域链,当前作用域可以访问上级作用域中的变量 3.解决的问题:保存变量,保护变量 4.带来的问题:内存泄露 5.块级作用域
发表于 2022-04-16 16:14:40 回复(6)
当所有函数被保存到外部时,就会形成闭包,可以实现公有变量,也可以做缓存(存储结构),实现封装属性私有化,模块化开发,防止污染全局变量
发表于 2022-04-14 22:34:35 回复(5)
闭包是指有权访问另一个函数作用域中变量的函数,创建方法是创建一个嵌套函数,然后内部函数可以访问到外部函数中的变量。闭包原理:作用域链,当前作用域可以访问到上级作用域的变量。解决的问题:能够使函数作用域中变量在函数执行结束后不被销毁,同时函数外部可以访问函数内部的局部变量。问题:垃圾回收器不会将闭包中变量销毁,会造成内存泄露,内存泄漏过多会造成内存溢出。
发表于 2022-04-27 12:00:00 回复(0)
1.概念:内部函数能够访问到外部函数中变量,这个内部函数被称为闭包 2.原理:作用域链,函数能够访问到上级函数作用域中变量 3.作用及应用:保存变量,防止全局污染,应用于模块化开发,节流防抖,函数柯里化等等 4.影响:内存泄漏
编辑于 2022-08-18 22:29:22 回复(0)
闭包是一个函数 一个作用域可以访问另一个函数的变量就会产生闭包,而这个变量所在的函数就被称为闭包函数。 作用:延申了变量的作用范围。坏处:滥用闭包会造成内存泄漏,不使用的变量也保存在内存里,从而消耗了大量内存 降低了浏览器的性能
发表于 2022-04-27 11:02:21 回复(1)
函数内部的函数可以访问外部函数的变量称为闭包
发表于 2022-04-20 13:19:07 回复(0)
1.一个函数可以访问另外一个函数内部变量的函数,被称为闭包; 2.闭包形成的原理是作用域链原理,当前作用域可以访问上级作用域中的变量; 3.闭包的特性:闭包函数被return到了外部,在函数执行结束后没有被销毁,所以在函数外部也能访问函数内部的局部变量;由于垃圾回收器不会降闭包中的变量销毁,于是就造成了内存泄漏,内存泄漏多了容易导致内存溢出; 4.闭包的应用:实现柯里化、防抖节流;
发表于 2022-09-05 14:52:25 回复(0)
闭包是指在一个函数中设置返回值为一个函数,在返回函数中可以调用方法中的变量时可以延长变量的使用作用域,变量不会被内存回收,防止全局变量污染,常见有防抖和节流函数,但是会造成内存泄漏。
发表于 2022-04-26 12:05:27 回复(0)
1.闭包可以理解为,那些引用了另一个函数作用域中变量的函数,通常发生在嵌套函数中。 2.要想理解好闭包,首先要理解作用域的创建和使用。我们知道,一个函数在调用的时,会为这个函数创建一个执行上下文,并创建一个作用域链。函数在执行时,要顺着作用域链执行。内部上下文可以通过作用域链去访问到外部上下文的一切,但是外部上下文不能访问到下一级的上下文。在函数执行完毕后,函数局部上下文中的变量对象,也就是活动对象会立即销毁,内存中只剩下全局作用域。全局作用域会在关闭浏览器时销毁。 但是闭包就不一样了。 闭包让函数外部可以操作(读写)到函数内部的数据(变量/函数)。 3.但是闭包会造成内存过度占用,出现内存泄露等情况。因为在函数执行完毕后,外部函数的活动对象并不能在它执行完毕后销毁,因为内部的匿名函数得地作用域链中仍然有对它的引用。但是此时外部函数的作用域链会被销毁。由于外部函数的活动对象仍然会保留在内存中,只有匿名函数被销毁之后才会被释放。
发表于 2022-09-22 12:18:55 回复(0)
答:A函数可以访问B函数里面的变量,这种现象被称为闭包,但是滥用闭包可能会造成内存泄漏的问题,一般用来防抖节流
编辑于 2022-04-22 11:17:08 回复(0)
闭包就是一个函数能够访问另一个函数中的变量,导致该变量内存无法释放的现象; 闭包的好处就是能够延申变量的作用域; 闭包的坏处就是造成了内存泄漏,因为闭包中的局部变量永远不会被回收,由于垃圾回收器不会将闭包中变量销毁,于是就造成了内存泄露,内存泄露积累多了就容易导致内存溢出; 闭包形成的原理,通过函数的作用域链,在闭包函数中可以访问到该函数在定义时的作用域即该函数的父作用域,因此可以访问到父作用域中的局部变量,形成闭包。 闭包的应用,能够模仿块级作用域,能够实现柯里化,在构造函数中定义特权方法、Vue中数据响应式Observer中使用闭包等。
发表于 2023-06-27 21:17:32 回复(0)
闭包:我把我家的钥匙给你了。
编辑于 2023-03-07 10:50:27 回复(0)
简单理解就是,闭包就是一个作用域可以访问另外一个函数内部的局部变量; 作用:延长变量的作用域,在函数的外部可以访问函数内部的局部变量,容易造成内存泄漏,因为闭包中的局部变量永远不会被回收。 闭包的应用,能够模仿块级作用域,能够实现柯里化,vue的数据响应Observer中使用了闭包
发表于 2023-02-05 11:41:02 回复(0)
如果一个函数可以访问到外部函数的私有变量,我们就称这个函数是闭包。闭包可用于防抖和节流
发表于 2022-12-29 12:28:05 回复(0)
浏览器垃圾回收机制根据数据的存储方式分为栈垃圾回收和堆垃圾回收。 栈垃圾回收的方式非常简便,当一个函数执行结束之后,JavaScript 引擎会通过向下移动 ESP 来销毁该函数保存在栈中的执行上下文,遵循先进后出的原则。堆垃圾回收,当函数直接结束,栈空间处理完成了,但是堆空间的数据虽然没有被引用,但是还是存储在堆空间中,需要垃圾回收器将堆空间中的垃圾数据回收。为了使垃圾回收达到更好的效果,根据对象的生命周期不一样,使用不同的垃圾回收的算法。在 V8 中会把堆分为新生代和老生代两个区域,新生代中存放的是生存时间短的对象,老生代中存放的生存时间久的对象。新生区中使用Scavenge算法,老生区中使用标记-清除算法和标记-整理算法。
编辑于 2022-09-10 21:35:52 回复(0)
一般函数执行完毕其内部的变量会被销毁,但是由于闭包的存在,使变量还被引用着
发表于 2022-08-05 18:14:54 回复(0)
一个函数内部创建另一个函数,通过另一个函数来访问这个函数的局部变量,利用闭包突破作用域链,讲这个内部函数的变量和方法传递出去。因为闭包会常驻内存中,造成内存泄漏,所以要慎用闭包。
发表于 2022-04-19 12:45:36 回复(0)
1、闭包的形成:函数嵌套函数 2、闭包的作用:保护变量,延长变量生命周期 3、闭包的缺陷:内存泄漏,垃圾回收机制不会自动回收闭包 4、闭包的应用:
编辑于 2024-04-10 23:01:46 回复(0)