JS-闭包小解析
来源:互联网 发布:罪夜之奔 知乎 编辑:程序博客网 时间:2024/05/29 08:20
闭包
当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。
闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的表达式(通常是函数)。这些被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。
下面这段代码清晰地展示了闭包:
function foo () { var a = 2; function bar () { console.log(a); } return bar;}var baz = foo ();baz (); //2----闭包效果~
bar ( ) 在自己定义的词法作用域以外的地方正常执行。
在foo ( )执行后,通常foo ( )的整个内部作用域都被销毁,因为引擎有垃圾回收器用来释放不再使用的内存空间,但是闭包会阻止被销毁,内部作用域依然存在。
由于bar ( )的声明位置,它拥有涵盖foo ( )内部作用域的闭包,使该作用域能一直存活,以供bar ( )在之后任何时间进行引用。
也正是因为内部作用域依然存在,所以可以用来封装一个私有变量。但是不必要的闭包会增加内存消耗。
0 0
- JS-闭包小解析
- js 解析
- js 函数深入解析
- JS解析XML
- JS解析,格式化日期
- 浅析js解析顺序
- js解析xml文件
- js解析RSS
- JS解析cookie
- JS解析XML
- js解析xml文件
- JS解析XML
- js xml封装解析
- js 里面解析xml
- js解析xml文件
- js解析url参数
- java 解析js脚本
- js 解析xml
- Servlet从定向和路径匹配
- RecyclerView调用notifyDataSetChanged刷新,图片闪烁
- 例题4-1 古老的密码
- LeetCode 152. Maximum Product Subarray 解题报告
- sql sever数据库学习之-----数据更新与删除
- JS-闭包小解析
- Android开发:顶部&底部Tab导航栏实现(TabLayout+ViewPager+Fragment)
- Hibernate之多对多映射
- Linux运维笔记-文档总结-sort用法和uniq用法
- Problem A: 还会用继承吗?
- java封装的理解及使用及 No enclosing instance of type j is accessible. Must qualify the allocation with an
- Http Cookies 详解
- 关闭LOL等电脑进程小程序
- perl脚本文件的第一行用法