zoukankan      html  css  js  c++  java
  • javascript匿名函数 闭包

    匿名函数

     

    (function(){
                    console.info("111111111");
                })();

     

    var my = (function(){
                    return "11111111";
                })();

     

    函数里放匿名函数叫闭包

               function my(){
                    return function(){
                        return "张三";
                    }
                }
                
                console.info(my()());

    闭包的优点,避免使用全局变量,提供访问局部变量

     

     //把局部变量保存起来
                
                function box(){
                    var age = 100;
                    
                    return function(){
                        age++;
                        return age;
                    }
                    
                }
                
                var b = box();
                b();
                b();
                b();

     

               function box1 (){
                    
                    var arr = [];
                    
                    for(var i=0;i<5;i++){
                        arr[i] = (function (num){
                            return num;
                        })(i)
                        
                    }
                    return arr;
                    
                }

            var my = function(){
                    return "11111111";
                }();

     

           闭包在全局是指向window,

      var name ="全局";
                var user ={
                    name:"张三",
                    getUser:function(){
                        var that = this;
                        return function(){
                            return that.name;//返回user对象的属性,而不是全局
                        }
                    }
                }

     

     块级作用域,(function(){

                       })();

     

               function box(){
                    
                    var arr = [];
                    
                    for (var i=0;i<5;i++) {
                        
                        arr[i] = (function(num){
                            //有时arr[i] 需要经过函数复杂计算,闭包的用处
                            return num;
                            
                        })(i);
                        
                    }
                    return arr;
                    
                    
                }

    闭包this指向window

                var name = "window";
                var box = {
                    name:"box",
                    getName: function(){
                        //这里的作用域指向box
                        var that = this;
                        return function(){
                            //这里的作用域指向window
                            return that.name;
                        }
                    }
                }
                
                alert(box.getName()());
               var name1 = "1212";
                (function(){
                    var name1 = "张三"
                    alert(this.name1);//指向window
                    
                })();

    //块级作用域,变成私有作用域

               function Box(){
                    var name = "张三";//私有变量外部无法访问
                    function eat(){//私有方法外部无法访问
                        return "吃饭";
                    }
                    this.run = function(){//公有方法共外部调用
                        return name +eat();
                    }
                }
  • 相关阅读:
    MyBatisPartA
    概念:漏洞扫描技术
    概念:防火墙技术
    概念:认证技术与访问控制
    概念:为什么要引进密钥管理技术
    概念:数字签名、传统签名和认证
    概念:简述对称密码算法和公钥密码算法的区别
    概念:单向散列函数部分知识点
    Redis单线程QPS效率高的原因,以及redis6.0升级后的变化
    Mydql数据库缓存池Buffer Pool 冷热数据分离
  • 原文地址:https://www.cnblogs.com/jentary/p/6284225.html
Copyright © 2011-2022 走看看