闭包经典案例留存

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]

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

闭包经典案例留存

闭包与装饰器

Spark闭包与序列化

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

重复事件(表现形态:活跃留存复购)建模(生存分析)的案例学习笔记

JS冒泡和闭包案例分析