对js闭包的理解

    xiaoxiao2022-07-05  154

    1.什么是闭包? 闭包是一种特殊的函数

    2.如何生成一个闭包? 当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的其他变量,如果返回的这个函数在外部被执行,就产生了闭包 3. 闭包特点 只要闭包还在使用外部函数的数据,那么外部的数据就不会被释放 也就是说可以延长外部函数数据的生命周期

    闭包注意点: 当后续不使用闭包的时候,一定要手动将闭包设置为null,否则会出现内存泄漏
    例子
    function test() { let i = 666; //由于demo函数满足闭包的两个条件,所以demo函数就是闭包 return function demo() { console.log(i); } } let fn = test(); fn();

    当不再使用时将闭包置为null

    fn = null; fn();//fn is not a function
    闭包可以访问3种范围内的变量

    1.自己范围内的变量 2.父函数范围内的变量 3.全局变量

    let num = 3000;//全局变量 let fn = (function () { let str1 = 'I love you';//对于闭包来说是父函数范围里的变量 /* (function () { console.log(`${str} ${num}`); })()*/ return function () { let str2 = 'times';//自己范围内的变量 console.log(`${str1} ${num} ${str2}`); } })(); fn();//I love you 3000 times fn = null;
    最新回复(0)