美文网首页
三、JavaScript 笔记之闭包

三、JavaScript 笔记之闭包

作者: cqzhangjian | 来源:发表于2019-07-23 16:53 被阅读0次

当函数作为参数传入函数,该函数为高阶函数,当函数作为函数的返回结果返回,就形成了闭包。返回的函数被引用,该引用就保留了定义时的词法作用域,即该引用就是闭包。

1.函数作为返回值

        'use strict'
        function foo () {
            var attr = [];
            for(var i = 0; i < 10; i++){
                attr.push(function(){
                    return i;
                });
            }
            return attr;
        }
        var r = foo();
        console.log(r[0]()); //10
        console.log(r[1]()); //10
        console.log(r[2]());  //10

改造1:

       'use strict'
        function foo () {
            var attr = [];
            for(let i = 0; i < 10; i++){
                attr.push(function(){
                    return i;
                });
            }
            return attr;
        }
        var r = foo();
        console.log(r[0]()); //0
        console.log(r[1]()); //1
        console.log(r[2]());  //2

改造2:

        'use strict'
        function foo () {
            var attr = [];
            for(var i = 0; i < 10; i++){
                attr.push(function(n){
                    return function(){
                        return n;
                    }
                }(i));
            }
            return attr;
        }
        var r = foo();
        console.log(r[0]());
        console.log(r[1]());
        console.log(r[2]());  

2.返回对象携带闭包

        'use strict';

        function create_counter(initial) {
            var x = initial || 0;
            return {
                inc: function () {
                    x += 1;
                    return x;
                }
            }
        }
        var c1 = create_counter();
        c1.inc(); // 1
        c1.inc(); // 2
        c1.inc(); // 3

注意:对象中产生闭包,对象返回

相关文章

  • JavaScript----闭包

    javascript之闭包 闭包的概念     闭包(closure)是 JavaScript 的一种语法特性。 ...

  • 三、JavaScript 笔记之闭包

    当函数作为参数传入函数,该函数为高阶函数,当函数作为函数的返回结果返回,就形成了闭包。返回的函数被引用,该引用就保...

  • avaScript 闭包的理解

    JavaScript 学习笔记之闭包 这篇文章是我学习闭包的笔记与总结,后面会有一些例子,结合画图的形式来理解,什...

  • JavaScript学习笔记(4) 闭包详解(Closure A

    《JavaScript学习笔记(4) 闭包详解(Closure Are Not Magic)》 ---- 写在开头...

  • JavaScript闭包学习笔记

    @(JS技巧)[闭包] JavaScript闭包学习笔记 什么是闭包? 有些情况下,函数调用完成之后,其执行上下文...

  • 闭包

    原文出处 JavaScript深入之闭包 定义 MDN 对闭包的定义为: 闭包是指那些能够访问自由变量的函数。 那...

  • 学习JavaScript闭包和作用域笔记

    JS JavaScript闭包和作用域 闭包 JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外...

  • javascript学习笔记(三)——闭包

    作用域 在程序的某个节点上的作用域指的是,该代码节点能够阅读到的所有实体(entity),也被称为上下文或者执行环...

  • 笔记:JavaScript闭包

    本文摘录及参考自:1. 学习Javascript闭包(Closure)2. 闭包的秘密3. JavaScript ...

  • JavaScript之闭包

    闭包 闭包:可以用一个函数 去访问 另外一个函数的内部变量的方式 闭包传参

网友评论

      本文标题:三、JavaScript 笔记之闭包

      本文链接:https://www.haomeiwen.com/subject/basalctx.html