javascript匿名函数 闭包

时间:2022-06-26 09:51:15

匿名函数

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