美文网首页Web
JS中的闭包和惰性函数

JS中的闭包和惰性函数

作者: 追逐_chase | 来源:发表于2019-08-20 14:16 被阅读6次
    web.jpeg

    闭包

    • 一个函数A访问另外一个函数B的数据
    闭包的作用
    • 可以间接访问封闭空间私有数据
    • 获取数据只能通过指定的接口
    • 在设置数据的时候可以进行校验处理
    • 延长变量的生命周期
    function fn(){
        var a =10;
        return function(){
            a++; 
            return  console.log(a);
            
        };
    }
    
    //访问 局部变量 
    var f = fn();
    f();
    f();
    // 如果 return a ; 就是延长局部变量的声明周期
    
    • 通过指定的方法获取数据 和 对数据的处理
      • getName获取数据
      • setName设置处理数据
    function demo (){
            var name = "cc";
            var age = 18;
    
            return function(){
    
                return {
                    getName:function(){
    
                        return name;
                    },
                    setName:function(newName){
                        if(newName){
                            name = newName;
                        }
    
                        return name;
                    },
                    getAge:function(){
                        return age;
                    },
                    setAge:function(newAge){
                        if(newAge < 0){
                            newAge = 0;
                        }
                        
                        return (age = newAge);
                    }
                }
            }
        }
    
    
    惰性函数
     //惰性函数: 做一次性初始化的操作
        function foo(){
            //初始化操作
            console.log("foo");
            //更新函数的执行内容,更新函数体
            foo = function(){
                console.log("oo-foo");
                
            }
            
        }
    
        foo();
        foo();
    
    

    立即执行函数

    • 通用格式:()();
    • 作用:将局部变量转化为全局变量
     (function(window){
            var name_cc = "测试";
    
            window.name_cc = name_cc;
            console.log(window);
            
        })(window);
        
        console.log(name_cc);
    
    不同形式的立即执行函数
       //匿名函数
        +function(){
            console.log("1");
            
        }();
    
    //匿名函数
        -function(){
            console.log("2");
        }();
    
    
     //匿名函数
        !function(){
            console.log("3");
        }();
    
    
    
    

    相关文章

      网友评论

        本文标题:JS中的闭包和惰性函数

        本文链接:https://www.haomeiwen.com/subject/ndevjctx.html