首页 > 试题广场 >

以下对闭包(closure)理解正确的有 ()

[不定项选择题]
以下对闭包(closure)理解正确的有  ()
  • 闭包是指有权访问另一个函数作用域中变量的函数;
  • 函数内再嵌套函数,返回到外部形成闭包;
  • 内部函数可以引用外层的参数和变量
  • 参数和变量不会被垃圾回收机制回收
闭包的作用 1 可以读取函数内部的变量 2 可以把变量始终保存在内存中 闭包的写法 1 一个函数(即外部函数)里面包含另一个函数(即内部函数),并且return返回这个内部函数, 然后内部函数在定义内部函数之外的作用域被调用,这时的内部函数就是一个闭包了。 2 内部函数引用了外部函数的变量,这个变量不会被销毁,因为闭包需要这个变量, 所以通过闭包可以访问闭包保存的变量 function foo(){ var n = 1; function innerFoo(){ n += 1; console.log(n); } return innerFoo; } var func = foo(); func(); // 2, 产生闭包innerFoo(),变量n保存在内存中 func(); // 3 闭包的缺点 1 因为闭包的变量保存在内存中,内存泄漏,对内存的消耗很大,所以不要滥用闭包 闭包常用的地方: 1 es5 for循环事件监听 2 函数里使用了定时器 3 封装许多高级的功能集 减少闭包使用可以用立即执行函数传递变量
编辑于 2019-09-19 16:24:48 回复(2)
D也不完全对吧,只有被另外一个作用域引用,才不会被回收
发表于 2020-03-29 00:00:09 回复(12)
这个a真的是,说对有不对,说错也有对
发表于 2019-09-23 11:28:18 回复(5)
出题的人,希望严谨一些,A,B都片面,不严谨,嵌套函数,内部函数如果没有引用外部函数数据,并没有形成闭包
发表于 2021-02-09 11:18:07 回复(0)
A选项是JavaScript高级程序设计(第3版).Nicholas.C.Zakas第197页的定义
发表于 2020-10-24 09:42:50 回复(0)
闭包函数被推出执行栈后这时垃圾回收机制运作了,里面的变量回收机制访问不到不就被回收了,为什么不会被回收
发表于 2019-10-06 20:40:01 回复(1)
没有被内部函数引用的参数和变量,怎么就不会被回收了?出题能严谨一点不
发表于 2021-07-23 07:58:05 回复(0)
D的话,闭包这个性质也存在,不能说对 也不能说不对
发表于 2020-08-18 18:40:00 回复(0)
用完了也不被回收吗
发表于 2022-05-10 00:14:47 回复(0)
就没人说一下C? 单纯看这句话是没错,跟题意结合起来 是闭包?
发表于 2021-06-02 09:14:25 回复(1)
D是不对的,仅在闭包函数引用了其上级作用域的函数下面的变量的时候才会不被清除,如果上级函数声明了变量b,但没有被引用就一样清
发表于 2021-04-18 19:50:49 回复(0)
A就是模凌两可,访问另一个函数,兄弟平级函数?还是父级函数,都tm是其他函数
发表于 2020-11-17 08:31:14 回复(1)
此题答案有明显的错误
B:如果返回的函数并没有引用父级函数的变量,那么它也不是闭包
D:返回内部函数被释放时,父级函数的参数和变量自然也就被回收了
发表于 2022-01-26 15:04:28 回复(0)
D  只是复杂类型不回收好吧    简单类型还是会回收的

发表于 2023-04-15 20:29:10 回复(0)
重点记住一句话:闭包让你可以在一个内层函数中访问到其外层函数的作用域
发表于 2023-03-16 20:09:22 回复(0)
d对的?
发表于 2023-03-02 21:14:57 回复(0)
d选项很奇怪,如果没有被返回的函数所使用,那参数的生命周期怎么被延长
发表于 2022-10-25 10:30:48 回复(0)
我觉得这个选BC,AD都太不严谨
发表于 2022-06-20 21:49:55 回复(0)
C选项和闭包有什么关系吗? 
发表于 2021-08-27 09:51:43 回复(0)
闭包:
1. 闭包是指有权访问另一个函数作用域中变量的函数
2. 函数内再嵌套函数,返回到外部形成闭包
3. 内部函数可以引用外层的参数和变量
4. 参数和变量不会被垃圾回收机制回收
发表于 2021-07-15 23:33:14 回复(0)