美文网首页前端让前端飞技术干货
立即执行函数形成的闭包

立即执行函数形成的闭包

作者: 小虫巨蟹 | 来源:发表于2016-11-17 16:22 被阅读134次

闭包是js中比较难以理解的概念,今天在敲立即执行函数的时候突然有感,稍作分析,聊表心意

闭包的概念简记

阮一峰的一篇文章讲到了一种很浅显易懂的理解:

闭包就是能够读取其他函数内部变量的函数

例如:

    function f1(){
    var n=999;
    function f2(){
      alert(n);
    }
    return f2;
  }
    
   n; //undefined
   var result = f1();
   result();//999

当然这种说法必要但是不充分,因为这种说法没有包括这样一种情况(作用域内)

    var obj = {
        a: 'a',
        showA: function() {
            console.log(this.a);
        }
    }

    obj.showA(); //'a'

所以更为确切的理解我觉得是:

闭包就是能够读取其他作用域内部变量的函数

立即执行函数内部形成的闭包

    (function(global) {
        var defaultOpts = {
            a: 'abc'
        };

        function Test() {
            this.options = defaultOpts;
        };

        Test.prototype = {
            showA: function() {
                console.log(this.options.a);
            }
        };

        global.Test = Test;

    })(this);

    defaultOpts; //undefined
    new Test().showA();//abc

defaultOpts作为立即执行函数中的局部变量,在外部直接访问是访问不到的,然而它并没有在立即执行函数执行完成之后就消失,因为它在全局函数Test中被使用到了,它其实已经常驻内存了

so,遇到这样的情况不要疑惑,因为这已经形成闭包了

After

coding过程中突然的自我~~
继续搬砖去了

相关文章

  • 立即执行函数形成的闭包

    闭包是js中比较难以理解的概念,今天在敲立即执行函数的时候突然有感,稍作分析,聊表心意 闭包的概念简记 阮一峰的一...

  • 理解闭包

    什么是「闭包」。 「闭包」的作用是什么。在一个立即执行函数当中: 首先,假设以上几行代码运行在立即执行函数当中,那...

  • es5核心技术

    立即执行函数 函数提升和变量提升 闭包 this 原型链实现继承

  • javascript立即执行函数和闭包

    闭包 概念:当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链举例分析: 闭包的应用: 立即执行函数 ...

  • 闭包_定时器

    闭包的作用是:暴露局部函数立即执行函数 ==> 闭包 下面的代码输出多少?修改代码让 fnArri 输出 i。使用...

  • 闭包、立即执行函数闭包、BOM

    题目1: 下面的代码输出多少?修改代码让 fnArr[i]()输出i。使用 两种以上的方法 改写1 改写2 题目2...

  • 面试题 闭包 继承 原型

    闭包 什么是闭包?闭包的作用?闭包的应用?答: 函数执行,形成私有的执行上下文,使内部私有变量不受外界干扰,起到保...

  • IIFE(Immediately-invoked functio

    一、立即执行函数五花八门的写法: 二、立即执行函数与闭包的暧昧关系 像普通的函数传参一样,立即执行函数也能传参数。...

  • JavaScript闭包(三)

    目录 1.执行环境与作用域链 2. 立即执行函数 3. 闭包知识点 3.1 什么是闭包 3.2 使用闭包的意义与注...

  • 关于逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包当函数执行过程中,执行的函数内部的闭包,...

网友评论

    本文标题:立即执行函数形成的闭包

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