所谓闭包,就是变量 从外部开始,到达父函数体,然后再从父函数体内的函数(子函数) 返回到父函数体,简单一句话概括:函数外部调用函数内部的变量。
通过下面的代码给出结果,解释一下你的答案:
答案:
Aurelio De Rosa 和John Doe。一直没理解为什么输出是这样的,看到一个有关函数声明和函数表达式的说明和之前的js执行的过程(从声明开始再是表达式),觉得还是可以解释下这个问题的;
再看个例子:
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); //可以写成window.object.getNameFunc();
代码片段2:
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this; //这里的this指代的就是object本身了。
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()());
再看一个例子:
(function(){
var result=[];
for(var i=0;i<10;i++){
result[i]=function(){
return i;
}
}
alert(result[1]());
})();