什么是闭包?及闭包的优缺点

什么是闭包?及闭包的优缺点闭包 想重用变量又想保护这个变量不被篡改的一种机制 functionfn varcount 0 returnfuncti count returnconsol log count varf fn f 1f 2f 3 上面就是一个 j 简单闭包的例

闭包:想重用变量又想保护这个变量不被篡改的一种机制,是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量.

function fn() { 
    var count = 0; return function fn2() { 
    count++ return console.log(count) } } var f = fn(); f();//1 f();//2 f();//3 

上面就是 一个简单闭包的例子,那么闭包中的变量为什么不会被回收呢?

那是因为JavaScript中的内存回收机制,也就是说一个函数开始执行的时候,它会给这个函数中定义的变量划分 内存空间来保存,如果一个函数不再被引用,那么这个函数就会被GC回收。如果两个函数互相引用,而不再被第3者所引用,那么这两个互相引用的函数也会被回收。因为函数fn 被fn2引用,fn2又被 fn外面的f 引用,所以函数fn2执行后不会被销毁.

闭包有三个特性:

闭包的优点是:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232166.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu卸载软件:3种卸载方式

    Ubuntu卸载软件:3种卸载方式1.使用Synaptic软件包管理器进行卸载打开软件包管理器。Ubuntu自带了一个GUI(GraphicalUserInterface,图形化用户界面)软件包管理器,它可以让你在一个可视化窗口中卸载程序。如果你不习惯使用命令行,这一工具将非常有用。点击系统,然后选择管理。在管理菜单中,选择Synaptic软件包管理器。某些较新版本的Ubuntu没有预装Synaptic。要安装它,打…

    2022年5月7日
    690
  • html5 空格_打前端代码用一堆空格符

    html5 空格_打前端代码用一堆空格符html5中的空格符 1,Html中空格   不断行的空白(1个字符宽度)   半个空白(1个字符宽度)  一个空白(2个字符宽度)   窄空白(小于1个字符…

    2022年9月1日
    3
  • 什么叫侧面指纹识别_侧面指纹识别真的只是大法一家独有?

    什么叫侧面指纹识别_侧面指纹识别真的只是大法一家独有?好久不见~!,ZAKER科技的各位机友们,第14期《每周猜机》又跟大家见面了。每周猜机到14期了,这期间离不开各位同学的支持,也希望各位同学能继续关注这个栏目。先透漏这期的主题也是前两期前后指纹识别主题的延伸,请各位猜机大神再接再厉,接下这期猜机:前两期的每周猜机,师兄已经可以看出各位同学对于前后指纹识别都有自己的见解,两方僵持不下,那师兄这次就提出一个中立解决方案——侧面指纹识别,现…

    2022年6月26日
    189
  • pycharm2021.3.3激活 mac破解方法[通俗易懂]

    pycharm2021.3.3激活 mac破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    1.7K
  • Root apk 2021_proguard混淆jar包

    Root apk 2021_proguard混淆jar包backdoor-apk从名字上我们就能知道它的用途了,没错就是用来制作APK后门的。这款工具使用起来非常方便,而且功能也很强大!话不多说,下面我们直接进入正题。首先,让我们对它进行安装,在安装前我们需要先安装它的一些依赖lib库文件:apt-getinstalllib32stdc++6lib32ncurses5lib32z1这里询问我们,对这些安装的服务,当他们更新时不再进行询…

    2022年8月20日
    9
  • 机器学习(二):有监督学习、无监督学习和半监督学习

    机器学习(二):有监督学习、无监督学习和半监督学习一、基本概念1特征(feature)数据的特征。举例:书的内容2标签(label)数据的标签。举例:书属于的类别,例如“计算机”“图形学”“英文书”“教材”等。3学习(learning)将很多数据丢给计算机分析,以此来训练该计算机,培养计算机给数据分类的能力。换句话说,学习指的就是找到特征与标签的映射(mapping)关系。这样当有特征而无标签的未知数据输入时,我们就可以通过已有的

    2022年5月27日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号