js中我这个是闭包吗?
《你不知道的JavaScript》书中,对闭包的解释大概是这样的:对函数类型的值进行传递时,保留对它被声明的位置所处的作用域的引用(复制别人的)。把foo2函数当成参数传...
《你不知道的JavaScript》书中,对闭包的解释大概是这样的:对函数类型的值进行传递时,保留对它被声明的位置所处的作用域的引用(复制别人的)。把foo2函数当成参数传入foo中,foo2函数不能访问foo的局部变量,意思是它的作用域是全局?那不就符合上边闭包的定义了吗
展开
1个回答
展开全部
没有回答你的问题是因为你所说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)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询