Js闭包常见三种用法
2016-04-14 10:20
471 查看
Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可以为编程数据获取提供简巧快捷的方式,缺点是占用内存时间过长,容易造成内存泄漏,影响性能。下面是我总结的闭包常见的三种用法:
这里再证明一下函数的参数也是可以被内部函数保存的:
一 模仿块级作用域
(function(){ var a=1; var i=0; var temps=[]; while(i<10){ temps[i]=a+i; a=a+i; i++; } console.log(temps); //[1, 2, 4, 7, 11, 16, 22, 29, 37, 46] })(); console.log(i); //undefined
二 函数作为参数传进作为内部函数使用:
function func1(str){ var strTotal=str+" loves"+" "; return strTotal; } function func2(fn,str2){ var str="Johnharvy"; return func1(str)+str2; } console.log(func2(func1,"LouJia xing!")); //Johnharvy loves LouJia xing!
三 返回内部函数,返回的函数中存有外部函数的活动对象:
function func3(){ var str="Johnharvy"; function func4(str2){ return str+" "+"loves"+" "+str2; } return func4; } console.log(func3()("LouJia xing!")); //Johnharvy loves LouJia xing!
这里再证明一下函数的参数也是可以被内部函数保存的:
function func5(str){ function func6(){ alert(str); } return func6; } func5("Hai!")();//Hai
相关文章推荐
- 假分页 js分页 查询出所有数据再分页
- javaScript数组迭代方法详解
- Extjs cookie操作的两种方式
- JavaScript类——小例子
- JSONP详解
- js贪吃蛇游戏实现思路和源码
- JS跨域解决方案之使用CORS实现跨域
- Js获取当前日期时间及其它操作
- 关于JavaScript parseFloat() 函数精度不一致的问题
- 认识AMD、CMD、UMD、CommonJS
- shiro拦截器,返回json数据
- ExtJs4回车事件监听
- Extjs Window用法详解
- 问题:iis配置json;结果:如何配置iis支持.json格式的文件
- js实现div居中
- Extjs GridPanel用法详解
- JavaScript 开发者经常忽略或误用的七个基础知识点
- JS创建新元素组与删除当前元素组
- js渲染引擎 tempo.js
- Javascript闭包(Closure)