js中我这个是闭包吗?

《你不知道的JavaScript》书中,对闭包的解释大概是这样的:对函数类型的值进行传递时,保留对它被声明的位置所处的作用域的引用(复制别人的)。把foo2函数当成参数传... 《你不知道的JavaScript》书中,对闭包的解释大概是这样的:对函数类型的值进行传递时,保留对它被声明的位置所处的作用域的引用(复制别人的)。把foo2函数当成参数传入foo中,foo2函数不能访问foo的局部变量,意思是它的作用域是全局?那不就符合上边闭包的定义了吗 展开
 我来答
无野楼升域醉0t
2019-08-09 · TA获得超过8552个赞
知道小有建树答主
回答量:1498
采纳率:88%
帮助的人:507万
展开全部

没有回答你的问题是因为你所说foo foo2我没有看到。

这段代码是闭包的形式,但是没有使用到闭包的功能。另外这个setTimeout是在干什么有点看不懂。



另外看下这段代码加深理解

function addx(x) {

 return function(y) {return x+y;};

add8 = addx(8);add9 = addx(9); 

alert(add8(100));alert(add9(100));

另外补充一下 我对闭包的理解。

js运行环境上下文中是有作用域的,一般情况下方法在使用完后会在作用域栈中被弹出并释放,而闭包这种形式虽然弹出了方法,但是方法自己又独立的占据了一块内存而没有释放,一直保持着内部上下文。

不知道能不能看明白,简单说就是一般方法用完就会从内存中删除,而闭包没有被删除(因为return了function)。

更多追问追答
追问

不好意思,放错图了

追答

这个不是闭包

看到圈出来的地方么,在函数内部又声明了一次变量。

闭包要返回方法才能把这个方法的上下文独立保存。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式