闭包产生的条件:内部函数使用外部变量+外部函数被调用(满足)

下列关于闭包描述正确的是?()

A
闭包内变量执行后不会被清除

B
闭包不满足链式作用域结构

C
(Function(){})()理论上是一个闭包

D
闭包不耗内存,可以随意使用

正确答案:AC

可以用(function(){})()来构成闭包,而不是(function(){})()是闭包。这个要明确

直接写

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

这叫立即执行函数,不是叫做闭包

但是有时候在for循环里面我们可以这样写,使用的是(function () {})() 这个形式产生闭包

for(var i=0; i<10; i++){ (function(j){ setTimeout(function(){ console.log(j); },1000) })(i) }

链式作用域是js本身自然存在的一种获取变量的方式。链式作用域外部可以访问内部,内部访问外部需要设置一个函数,由此产生闭包。

立即执行函数(IIFE)不是一种闭包,它只是函数的一种调用方式,和闭包没有必然的联系,两者经常结合着一起使用,但两者的本质并不同


__EOF__

本文作者龙陌
本文链接https://www.cnblogs.com/longmo666/p/17829228.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   龙陌  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示