闭包

  • 定义
  1. 引用了自由变量的函数
  2. 函数+它自己引用的变量=闭包
        //定义了一个外层函数
        function foo(x){
            var tmp = '3';  //定义了一个局部变量
            return function(y){   //把一个函数作为返回值返回
                console.log(x+y+(++tmp));  
                // 可访问以下内容自己有的y  父级的tmp、x  顶级的bar
            }
        }
        //调用foo方法执行,并把返回的函数给了bar变量
        var bar = foo(2); 
        //bar是一个全局变量,此时bar指向匿名函数,所以bar是个闭包-
        //-闭包体是匿名函数+x+tmp(x、跟tmp是父级的)
        bar(10);
        bar(20);
  • 匿名自执行函数
        //常规写法
        var t = function (a){
            console.log(a);
        };
        t(9);  
        //尽量避免定义全局变量,容易造成命名冲突
        //自执行函数写法
        (function(a){      //模拟块级作用域名
            console.log(a);
        })(9)
        //匿名自执行函数
        (function(a1){
            //模拟块级作用域
            var m = 10;
            console.log(a1);
            console.log(m);
        })(8);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本章将会介绍 闭包表达式尾随闭包值捕获闭包是引用类型逃逸闭包自动闭包枚举语法使用Switch语句匹配枚举值关联值原...
    寒桥阅读 5,439评论 0 3
  • 感觉有点难懂,可以参考https://www.jianshu.com/p/49e7a29a2698 闭包是自包含的...
    CDLOG阅读 3,816评论 0 0
  • 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代...
    穷人家的孩纸阅读 5,663评论 1 5
  • 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代...
    莽原奔马668阅读 5,849评论 2 12
  • 《母亲盆栽记》 这是一棵 很普通 很普通不过的榆树 这棵榆树的背景 确不凡想啊 二十八年前 一个春天 母亲去河沿边...
    老武家阅读 1,137评论 0 0