6

以这段代码为例:

var test = (function(){
  var name = 'rar';
  return function foo(){
    console.log('test');
  };
}());

foo在内部范围内test 没有任何引用的情况下返回。name会发生什么name?它被摧毁了吗?还是它继续存在并与返回的函数挂钩,但无法访问?第一种情况是否类似于执行以下操作,好像name从来都不是等式的一部分?:

var test = function foo(){
  console.log('test');
};

这是另一个案例:

var test2 = (function(){
  var name = 'rar';
  var age = '20';
  return function foo(){
    console.log(age);
  };
}());

age被引用foo并将形成一个闭包。但是,name仍然没有被任何东西引用。name在这种情况下会发生什么?它被摧毁了吗?还是它继续存在并与返回的函数挂钩,但无法访问?

4

1 回答 1

4

在 Chrome 中,name将被 GCed;在 Firefox 中,name是保持与整个关闭。IE?我不知道。

于 2013-05-31T05:54:29.537 回答