美文网首页前端基础知识记录
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中的闭包和匿名函数

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