javascript匿名函數 閉包

匿名函數閉包

 

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

 

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

 

函數裏放匿名函數叫閉包spa

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

閉包的優勢,避免使用全局變量,提供訪問局部變量對象

 

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

 

           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";
            }();get

 

       閉包在全局是指向window,io

  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();
                }
            }
相關文章
相關標籤/搜索