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();
                    }
                }
  • 相关阅读:
    上百个Linux、BSD、Unix学习电子书+视频下载汇总
    测试管理杂谈之理论篇
    浅谈软件测试思维
    细节决定完美——色彩在测试工作中的应用
    图像视频测试基础
    [转]什么是三码、五码机?
    一组经典测试思想观点
    关于LCD分辨率、色素相关知识介绍
    QTP 学习视频汇总
    【诗词涂鸦】满江红 别情
  • 原文地址:https://www.cnblogs.com/jentary/p/6284225.html
Copyright © 2011-2022 走看看