闭包经典案例留存

Posted rainux.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包经典案例留存相关的知识,希望对你有一定的参考价值。

Code Is Never Die !

闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数内部创建另一个函数。

function createFunction()
            var result = new Array();
            for(var i=0; i<10; i++)
                result[i] = function()
                    return i;
                
            
            console.log('i 的值:'+ i)
            return result;
        

调用函数:

createFunction()

createFunction()[1/2/3/...]() //代表调用第一个或第二个或第三个,结果都一样


若希望得到预期结果,需要修改原函数:

function createFunction()
            var result = new Array();
            for(var i=0; i<10; i++)
                result[i] = (function(num)
                    return i;
                )(i)
            
            console.log('i 的值:'+ i)
            return result;
        

改为立即执行函数,这样每次都会自动执行,所以result=[0,1,2,3,4,5,6,7,8,9]

以上是关于闭包经典案例留存的主要内容,如果未能解决你的问题,请参考以下文章

闭包经典案例留存

经典js闭包----对《大部分人都会做错的经典JS闭包面试题》的理解

转载大部分人都会做错的经典JS闭包面试题

转载APP留存率多少才合格——全面解析留存率

JS冒泡和闭包案例分析

Clickhouse(流量分析(二).留存分析案例)