美文网首页前端基础知识记录
JS中的闭包和匿名函数

JS中的闭包和匿名函数

作者: 大写的Q | 来源:发表于2017-07-17 14:25 被阅读10次

其实这两个我也看了好多遍了但总是记不住!好气哦但还是要保持学习的心态,所以今天手写理一遍,希望不会忘得一干二净。

闭包

有权访问另一个函数作用域中的变量的函数。
创建闭包的常见方式,就是在一个函数内部创建另一个函数。
会携带包含它的函数的作用域,会比其他函数占用更多内存。
会有内存泄漏的问题。如果闭包作用域链中包含html元素,那就意味着无法被销毁。
闭包只能取得包含函数中任何变量的最后一个值。

匿名函数

没有名字的函数: function () {};
使用function关键字声明一个函数,但未给函数命名,所以叫匿名函数。
立即执行函数(function(){…})() 内部定义的变量不会和外部的变量发生冲突

遇到一个题,可以借助这道题加深一下对闭包的认识:

写一个count函数,实现如下效果:

count()===1,
count()===2,
...
依次递增。
不可以有和count同级的其他变量。

由题目条件可以看出,count函数必须是个立即执行函数,立即执行函数有两种:( function(){…} )()和( function (){…} () ),另外还要用到闭包,这样才能实现递增的效果。

下面是一个答案:

var count = (function() {  //立即执行函数
    var i = 1;
    return function() { //闭包
        return i++;
    };
})() 

欢迎大家讨论指正~~~

相关文章

  • js循环引用引起的内存泄漏示例

    Js中存在和OC同等意义的闭包(block& closure)闭包可看作匿名函数,例如: 函数中 给element...

  • 后端程序员的 JavaScript 之旅 - 模块化(一)

    基础模式 匿名闭包 匿名闭包是很常用的代码隔离方式,声明匿名对象并立即执行。匿名函数中声明的变量和方法以及匿名函数...

  • Swift学习-闭包&& 懒加载&&am

    闭包 闭包的介绍 闭包和OC中的block非常相似OC中的block是匿名的函数Swift中的闭包是一个特殊的函数...

  • JS中的闭包和匿名函数

    其实这两个我也看了好多遍了但总是记不住!好气哦但还是要保持学习的心态,所以今天手写理一遍,希望不会忘得一干二净。 ...

  • PHP闭包

    一. 闭包函数又叫做匿名函数(没有函数名称的函数). 英文closure 匿名函数常在js函数中出现,比如ajax...

  • PHP新特性之闭包、匿名函数

    闭包 闭包是什么? 1).闭包和匿名函数在PHP5.3中被引入。2).闭包是指在创建时封装函数周围状态的函数,即使...

  • JS闭包和匿名函数

    研究了数小时的JS闭包,终于有所收获了,网上有很多关于闭包的研究,在这里我就只说说个人理解,如果有错误望指出加以改...

  • 闭包

    闭包 闭包和函数的区别:闭包可以储存一部分变量,函数不能,函数传什么有什么值 函数与匿名函数的区别,匿名函数可以完...

  • swift学习之闭包

    闭包的介绍 闭包和OC中的block非常相似 OC中的block是匿名的函数 Swift中的闭包是一个特殊的函数 ...

  • swift最新语法总结(闭包)

    闭包的介绍 闭包和OC中的block非常相似 OC中的block是匿名的函数 Swift中的闭包是一个特殊的函数 ...

网友评论

    本文标题:JS中的闭包和匿名函数

    本文链接:https://www.haomeiwen.com/subject/lrufkxtx.html