随手记之对闭包的理解

2017-04-24  本文已影响0人  spicychocolate

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

闭包的作用

由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在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>
上一篇下一篇

猜你喜欢

热点阅读