速览
var f1 = function(){
var a = 999;
nAdd = function(){n+=1} //没有var,nAdd是全局变量
f2 = function(){
alert(a)
}
return f2;
}
var result = f1();
result(); //999
nAdd(); //相当于一个setter,可以在函数外部操作函数内部变量的值
result(); //1000,f2()被执行了2次函数内的函数
可以读取函数内部的变量
让父函数的变量始终保持在内存中
注意:要想保持父函数的变量值不变,需要把父函数当作对象使用
//父函数作对象
var name = 'The Window';
var object = {
name : 'The Object',
getName : function(){
return function(){
return this.name
}
}
}
alert(object.getName()()) //The Windowvar _name = 'The Window';
var object = {
_name : 'The Object', //_name 下划线表示私有变量
getName : function(){
var that = this;
return function(){
return that._name;
}
}
}
alert(object.getName()()) //The Objectthat=this / _this=this
学习Javascript闭包(Closure)(阮一峰)
相关推荐:
立即学习“Java免费学习笔记(深入)”;
javascript的闭包是什么?javascript闭包如何使用?
以上就是javascript闭包 var that=this详解的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号