JS 闭包
2015-10-06 21:03
495 查看
闭包:是由函数和与其相关的引用环境组合而成的。
闭包允许函数访问其引用环境中的变量(又称自由变量)
广义上说,所有JS的函数都可以称为闭包,因为JS函数在创建时保存了当前的词法环境。
闭包的应用:
(1)可以保存现场, 点击li标签时,弹出1,2,3,说对应的数字
(2)封装
外部无法访问内部的变量,而内部可以访问外部的变量。可以只暴露借口,而私有变量得到了保护。
闭包允许函数访问其引用环境中的变量(又称自由变量)
广义上说,所有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; } } })();
外部无法访问内部的变量,而内部可以访问外部的变量。可以只暴露借口,而私有变量得到了保护。
相关文章推荐
- JSP include
- JavaScript基本语法(2)
- JSP过滤器导图详解
- 2015-09-29 js2
- JackSon——轻松解析Json/XML数据
- FastJson——生成和解析Json数据
- JS 变量作用域
- seajs3.0模块加载原理及源码注释
- javascript的介绍,实现和输出以及语法-javascript学习之旅(1)
- javascript的介绍,实现和输出以及语法-javascript学习之旅(1)
- javascript的介绍,实现和输出以及语法-javascript学习之旅(1)
- javascript的介绍,实现和输出以及语法-javascript学习之旅(1)
- javascript数组——数组的创建
- JS原型
- js返回上一页并刷新的多种实现方法
- JavaScript 中 onload 事件绑定多个方法的优化建议
- JSP要点总结
- 图片放大由主要由javascript实现
- js加载XML字符串或文件
- js中的几种继承方式