JavaScript 使用闭包
■实例设计
【示例1】使用闭包实现优雅的打包,定义存储器。
var f = function () { //外部函数
var a =[] //私有数组初始化
return function(x){ //返回内部函数
a.push(x); //添加元素
return a; //返回私有数组
};
}(); //直接调用函数,生成执行环境
var a = f(1); //添加值
console.log(a); //返回1
var b = f(2); //添加值
console.log(b); //返回1,2
在上面的示例中,通过外部函数设计一个闭包,定义一个永久的存储器。当调用外部函数,生成执行环境之后,就可以利用返回的匿名函数,不断向闭包体内的数组a传入新值,传入的值会一直持续存在。
【示例2】在网页中事件处理函数很容易形成闭包。
<script>
function f () { //事件处理函数,闭包
var a = 1; //私有变量a,初始化为1
b = function(){ //开放私有函数
console.log( "a = " + a ); //读取a的值
}
c = function () { //开放私有函数
a ++ ; //递增a的值
}
d = function ( ){ //开放私有函数
a --; //递减a的值
}
</script>
<button onclick="f ()">生成闭包</button>
<button onclick="b ()">查看 a 的值</button>
<button onclick="c ()">递 增</button>
<button onclick="d ()">递 减</button>
在浏览器中浏览时,首先单击“生成闭包”按钮,生成一个闭包。单击第2个按钮,可以随时查看闭包内私有变量a的值。单击第3、4个按钮时,可以动态修改闭包内变量a的值。
点击加载更多评论>>