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();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数表达式 有两种方式:1、函数声明2、函数表达式函数声明会提升,函数表达式不会。函数声明,在执行函数之前会先读取...
    fenerchen阅读 4,208评论 0 3
  • PHP自5.3版本开始就可以支持匿名函数(Anonymous functions)了,也成为闭包函数(closur...
    IT菌阅读 3,828评论 0 0
  • 其实这两个我也看了好多遍了但总是记不住!好气哦但还是要保持学习的心态,所以今天手写理一遍,希望不会忘得一干二净。 ...
    大写的Q阅读 2,047评论 0 0
  • 昨天面试了上海的MCAKE,面试官应该是个比较较真之人。自觉面试不是很好,但被邀请30号去公司面试。被面试官问了许...
    JasonQiao阅读 3,989评论 0 0
  • 研究了数小时的JS闭包,终于有所收获了,网上有很多关于闭包的研究,在这里我就只说说个人理解,如果有错误望指出加以改...
    Zoro_stack阅读 2,720评论 0 3