美文网首页
随手记之对闭包的理解

随手记之对闭包的理解

作者: spicychocolate | 来源:发表于2017-04-24 11:13 被阅读0次

闭包(closure)是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数内部创建另一个函数。

闭包的作用
  • 可以读取函数内部的局部变量
  • 让这些局部变量始终保存在内存中(变量没有被javascript的垃圾回收机制回收)

由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

使用场景
1.如何获得超过一个数据
function foo () {
    var num1 = Math.random();
    var num2 = Math.random(); 
    return {
         num1: function () { 
           return num1; 
        }, 
        num2: function () { 
           return num2; 
        } 
  }
 }
2.如何完成读取一个数据和修改这个数据
function foo () {
    var num = Math.random();
    return {
        get_num : function () {
            return num;
        },
        set_num: function( value ) {
            return num = value;
        }
    }
}
使用案例
1.属性
var person = function(){
        var name = "张三";
        this.getName=function(){
          return name;
        };
      };
      var p = new person();
      alert(p.getName());
2.保存复杂计算中的临时变量
html:
    <ul>
        <li>aaa</li>
        <li>bbb</li>
        <li>ccc</li>
        <li>ddd</li>
    </ul>

点击li的时候,alert各自的内容,比如点击第一个,alert “aaa”

<script type="text/javascript">
        var foo = function(){
            var liList = document.getElementsByTagName("li"),
            i=0,
            max = liList.length;
            for(;i<max;i++){
                (function(index){
                    liList[index].onclick = function(){
                        alert(liList[index].innerHTML);
                    };  
                })(i);
            }
        };
        foo();

    </script>

相关文章

  • 随手记之对闭包的理解

    闭包(closure)是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数内部创建另一个...

  • javascript之对闭包的理解

    index = 0 index = 1 index = 2 ...

  • 【js基础修炼之路】— 深入浅出理解闭包

    之前对于闭包的理解只是很肤浅的,只是浮于表面,这次深究了一下闭包,下面是我对闭包的理解。 什么是闭包? 引用高程里...

  • 对闭包的理解

    一、变量的分类 1、局部变量和全局变量 注意:声明变量时不使用var,所声明的变量就是全局变量,即使是在函数内部声...

  • 闭包(Closure)

    我对闭包的理解 个人理解 : 闭包就是能够读取其他函数内部变量的函数。使用闭包主要是设计私有的方法和变量 优点:可...

  • Gradle开发-Groovy闭包

    # 闭包 闭包的基础知识 闭包的使用 闭包 this,owner,delegate 的理解 总结 ## 闭包的基础...

  • 闭包

    这个问题也是必问的题目.重在把自己对闭包的理解表达出来.而我对闭包的理解是源于很久之前看阮一峰大师讲的闭包(clo...

  • JS进阶系列之闭包

    我对闭包的理解就是:闭包就是能够读取其他函数内部变量的函数,可以把闭包简单理解为“定义在一个函数内部的函数”。 在...

  • Python中的闭包

    php对闭包的定义是匿名函数,我之前对python闭包的理解是:外部函数以内部函数作为返回值,称之为闭包!!!(错...

  • python函数之闭包

    目录 python函数之闭包什么是闭包python中的namespace闭包的条件闭包的优点 python函数之闭...

网友评论

      本文标题:随手记之对闭包的理解

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