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();
                }
            }
原文地址:https://www.cnblogs.com/jentary/p/6284225.html