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();
                    }
                }
  • 相关阅读:
    vue分页组件(二)
    ES6里let、const、var区别总结
    electron-vue项目打包踩坑记录
    node环境变量配置
    第一次把本地项目与git相连
    java项目环境搭建
    npm上发布vue插件
    HTML5日期时间输入类型注意事项(time,date)
    vue 分页组件
    vue里ref ($refs)用法
  • 原文地址:https://www.cnblogs.com/jentary/p/6284225.html
Copyright © 2011-2022 走看看