+ -
当前位置:首页 → 问答吧 → 为何前者形成闭包 后者没有

为何前者形成闭包 后者没有

时间:2011-11-06

来源:互联网

var y = "global"; 
function constructFunction() { 
var y = "local"; 
function A(){
return y;
}
return A;

alert(constructFunction()()); // 结果为local

==================================================
var y = "global"; 
function constructFunction() { 
var y = "local"; 
return new Function("return y");  

alert(constructFunction()()); // 输出 "global" 

======================
为何前者形成了闭包,后者没有?

作者: cutemurphy   发布时间: 2011-11-06

谁回答下

作者: cutemurphy   发布时间: 2011-11-06

大概是 return new Function("return y"); 这个语句创造的匿名函数确实就是在包外的,原因不清楚。

作者: p2227   发布时间: 2011-11-06

return new Function("return y"); 返回的只是一个对象。。而不是函数体

作者: printf_2012   发布时间: 2011-11-06