首页 > Web开发 > 详细

JS 闭包

时间:2015-10-06 22:03:46      阅读:268      评论:0      收藏:0      [点我收藏+]


闭包:是由函数和与其相关的引用环境组合而成的。
闭包允许函数访问其引用环境中的变量(又称自由变量)
广义上说,所有JS的函数都可以称为闭包,因为JS函数在创建时保存了当前的词法环境。

 

function add() {
    var i = 0;
    return function () {
        alert(i++);
    }
}
var f = add();
f();    //0
f();    //1
执行完以后,变量i,并没有被释放。
add函数的返回结果就是闭包。

 

 

 

 

 


闭包的应用:
(1)可以保存现场, 点击li标签时,弹出1,2,3,说对应的数字

<ul id="uli">
	<li>1111</li>
	<li>2222</li>
	<li>3333</li>
	<li>4444</li>
	<li>5555</li>
</ul>

<script type="text/javascript">

	var uli = document.getElementById(‘uli‘);
	var lis = uli.getElementsByTagName(‘li‘);

	function helper(i) {
		return function () {
			alert(lis[i].innerHTML);
		}
	}

	for (var i = 0; i < lis.length; i++) {
		lis[i].onclick = helper(i);
	}

</script>

 

 

(2)封装

 

var observer = (function () {

	var observerList = [];

	return {
		add : function (obj) {
			observerList.push(obj);
		},
		empty :  function (obj) {
			observerList = [];
		},
		getCount : function () {
			return observerList.length;
		},
		get : function () {
			return observerList;
		}
	}

})();

 

 外部无法访问内部的变量,而内部可以访问外部的变量。可以只暴露借口,而私有变量得到了保护。

 

JS 闭包

原文:http://www.cnblogs.com/hgonlywj/p/4857743.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!