8 js之匿名函数(闭包)

/**
 * 闭包:在函数内部定义的函数,在外部调用
 * 
 * 作用:可以把一些函数私有化
 * 
 * 闭包 
 *  范式 ()()
 *  第一个参数是一个函数,函数中的参数为形参,在匿名函数中的所有方法都可以使用
 *  第二个括号内是实参
 *  
 *  下面的写法有以下好处
 *      1 可以让一些函数私有化
 *      2 可以让一些函数公开化
 *      3 在匿名函数中声明的属性在外部无法访问
 * 
 */

//匿名函数====自己执行
(function(a){
    alert("闭包函数中的"+a);
})(5);// 5 是实际参数

/*
 * ==========================
 */
function Person(){
    function Student(){
        alert("aaaaaa");
    }
}

//调用 Student();
Student();//Student undefined 未定义

//随便谁都可以修改 a属性的值
Person.a=5;

/*
 * ==========================
 */
(function(window){
    function A(){//私有的
        alert("AAAA");
        B();
        return {
            C:C,
            D:D
        };
    }
    function B(){//私有的
        alert("BBBBB");
    }
    
    function C(){//公开的
        alert("CCCC");
    }
    function D(){//公开的
        alert("DDDD");
    }
    window.A=A;//通过该方式,可以让一个函数称为公开的函数
    
})(window);

//window.A();

var json=window.A();//拿到A的返回值{C:C,D:D}
json.C();
json.D();

你可能感兴趣的:(8 js之匿名函数(闭包))