function?f1(){
var?n=999;
nAdd=function(){n+=1}
function?f2(){
alert(n);
}
return?f2;
}
var?result=f1();
result();?//?999
nAdd();
result();?//?1000不是很懂這段代碼為什么第一次result的時候結果是999,這段代碼不是按順序執行的么?還是說nAdd()必須調用才能使用,不然直接跳過直接運行alert?nAd沒有var ,所以是全局變量,所以需要調用?var?name?=?"The?Window";
var?object?=?{
name?:?"My?Object",
getNameFunc?:?function(){
return?function(){
return?this.name;
};
}
};
alert(object.getNameFunc()());這個程序的結果是"The?Window";不是很明白為什么?var?name?=?"The?Window";
var?object?=?{
name?:?"My?Object",
getNameFunc?:?function(){
var?that?=?this;
return?function(){
return?that.name;
};
}
};
alert(object.getNameFunc()());這個程序的結果是"My?Object",上面的都是我在網上看見的,是一段關于閉包的文章,網址如下http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
一段關于閉包問題的代碼,求大神解釋?
一顆獼猴桃
2016-06-26 16:33:04