【前端面试】闭包——笔记

112 阅读1分钟

一、概念

闭包是一个函数访问另一个函数的内部变量,使得函数不被垃圾回收机制回收,但是闭包过多容易导致内存泄漏。

二、好处

1、希望一个变量长期驻扎到内存当中; 2、避免全局变量的污染; 3、私有成员的存在; 4、安全性的提高

以下代码运行时,当把n赋值为100时,函数的调用次数打乱,使用闭包的方式能使变量n避免全局变量的污染,使得n长期驻扎到内存当中等。

 var n=0
    function getNumber(){
        n++
        console.log(n);
    }
    

以下代码,add函数能够访问getCount函数内部变量n,【定义全局变量a是指向函数add】使得函数不被垃圾回收机制回收,但是全局变量过多容易导致内存泄漏。【内存泄漏:不再使用的内存未能被程序释放】。

    function getCount(){
        let n=0;
        function add(){
            n++
            console.log(n);
        }
        return add
    }
    const a=getCount()

三、注意

闭包不一定有return和内存泄漏。