JavaScript笔记 第十六章 匿名函数和闭包
2013-10-26 10:50 xchit 阅读(262) 评论(0) 收藏 举报1.匿名函数
2.闭包
匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数。
一、匿名函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | //普通函数 function getName() { return 'name' ; } alert(getName()); //匿名函数 function () { //单独的匿名函数,是无法运行的 return 'name' ; //就算能运行,也无法调用,因为没有名称 } //把匿名函数赋值给变量 var getName= function () { return 'name' ; }; //通过自我执行来执行匿名函数 ( function () { //(匿名函数)(); 第一圆括号放匿名函数,第二个圆括号执行 alert( 'name' ); })(); ( function () { alert( 'name' ); })(); //把匿名函数自我执行的返回值赋给变量 var getName= ( function () { return 'name' ; })(); alert(getName); |
二、闭包
闭包是指有权访问另一个函数作用域中的变量的函数, 创建闭包的常见的方式, 就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。
1 2 3 4 5 6 7 8 9 | //通过闭包返回局部变量 function getAge() { var age= 100; return function () { return age; }; } alert(getAge()()); |
使用闭包有一个优点, 也是它的缺点: 就是可以把局部变量驻留在内存中, 可以避免使 用全局变量。(全局变量污染导致应用程序不可预测性,每个模块都可调用必将引来灾难, 所以推荐使用私有的,封装的局部变量)。
1 2 3 4 5 6 7 8 | //使用匿名函数实现局部变量驻留内存中从而累加 function getAge() { var age = 100; return function () { age++; return age; }; } |
PS:由于闭包里作用域返回的局部变量资源不会被立刻销毁回收,所以可能会占用更 多的内存。过度使用闭包会导致性能下降,建议在非常有必要的时候才使用闭
包。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步