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
1 回答
Walk_
TA贡献48条经验 获得超30个赞
问题一:
通常函数必须调用才能使用,除非是立即执行函数。不带var 定义的是全局
问题二:
嵌套函数指向依然是global,严格模式下是: undefined.
问题三:
为了解决上面的问题,我们先将this捕获在一个变量中,这里是that变量,来解决这个问题。
添加回答
举报
0/150
提交
取消