我知道闭包中的代码可以访问作用域链上的变量、方法和参数,但是如果它不使用它们中的任何一个会发生什么?这些变量还保留吗?
考虑这种情况:
function f(){
var a=[];
for(var i=0;i<1000000;i++) a.push({});
return function(){
alert('Hi');
};
}
var x = f();
a
即使闭包不使用变量,变量是否保留在内存中?
谢谢
更新:似乎没有关于“琐碎”闭包的答案。那么假设每个闭包(即使它什么都不做)都可以在内存中保留作用域链上的所有方法,包括它们的参数、变量和内部函数(直到闭包被垃圾收集),这是否公平?
此外,关于 node.js 的“可能重复”问题 - 据我所知,node.js 仅在基于 google 的 v8 JS 引擎的专用环境中运行。在这里,我说的是可以在任何现代浏览器中运行的网络应用程序(在大多数情况下)