欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

闭包,作用域和作用域链

程序员文章站 2024-02-17 16:31:52
...

什么是作用域?
作用域相当于一个空间,最大的作用域是window,而window下的变量是全局变量,而相对于的局部变量是指:在window下开辟一个空间,空间里的变量。
闭包是什么?
闭包就是有权访问另一个作用域中的变量的函数。
例如

    function f() {
        var n=0;
        function f1() {
            n++;
            console.log(n);
        }
        return f1;
    }
    var c=f();
    c();
    c()

图形理解
闭包,作用域和作用域链

代码的理解:
因为,我们要取f1里的变量,而全局变量不能访问局部变量,而局部变量能访问到全局变量。而我们要解决全局变量不能访问局部变量。我们就把return f1 到全局,这样就能访问了。如图解,首先f这个空间,而f1是f中的空间,我们要把f1里的变量导入出来,这样全局里面就能访问局部的了。但闭包运用不当就会导致内存泄漏。
而解决内存泄漏的常用方法 c=null;
作用域链:一个作用域访问另一个作用域形成的链式结构,就是作用域链