• 对js闭包的理解


      个人理解 闭包:函数内部定义一个函数,内部函数可以访问外包函数定义的变量。

      闭包的特点:变量长驻内存

      demo实现一个类似函数调用计数器功能:

            function fn(){
                var c = 0;
                function inner(){
                    c += 1;
                    console.log(c)
                }
                return inner;
            }
            var f1 = fn();
            f1(); // 1
            f1(); // 2  c没有被释放,长驻内存

           使用场景1:给setTimeout引用的函数传递参数(setTimeout的第一个参数只能是函数的引用)

            function laterCall(a){
                return function(){
                    console.log("a:",a)
                }
            }
            var fn2 = laterCall(123);
            setTimeout(fn2,1000)

      使用场景2:模拟私有成员

        var module1 = (function(){
            var a = 1;
            var addOne = function(){
                a += 1;
                return a
            };
            var subOne = function(){
                a -= 1;
                return a
            };
            return{
                addOne:addOne,
                subOne:subOne
            }
        })();
        
        module1.addOne()
        module1.subOne()

    使用场景3:实现面向对象

        function User(name){
            this.say = function(){
                console.log("hello "+ name);
            }
        }
        var user = new User("frank");
        user.say();
  • 相关阅读:
    启智树提高组Day4T3 2的幂拆分
    拉格朗日插值
    #3342. 「NOI2020」制作菜品
    P6776 [NOI2020]超现实树
    P6773 [NOI2020]命运
    P5298 [PKUWC2018]Minimax
    每日总结5.20
    每日总结5.19
    每日总结5.18
    每日总结5.17
  • 原文地址:https://www.cnblogs.com/jlyuan/p/11932207.html
Copyright © 2020-2023  润新知