什么是闭包呢?

闭包是子函数引用父函数的变量或函数;
最常用的形式是匿名函数自执行(function(){}())。
如:有三个div,点击div弹出相应的内容

<div id="1">1</div>
<div id="2">2</div>
<div id="3">3</div>
for(var i =1;i<3;i++){
    var ele = document.getElementsById(i);
    (function(i){
    ele.onclick=function(){
        alert(i);
    }
    }(i));
}

其次在谷歌调试中,也能实时监测闭包变量或函数,如下图显示;closure就是闭包的意思
clipboard.png

闭包的好处

可封装
减少全局变量污染,避免与第三方插件命名冲突
减少函数间传递的参数个数
如:

  function calFactory(base){
        var base = 5;  //优先级比参数高
        return function(max){
            var total = 0;
            for (var i =1;i<=max; i++) {
                total+=i;
            }
            return total + base;
        }
    }
    var adder = calFactory(2);  //adder = function(max)
    alert(adder(3));









敏小静
55 声望3 粉丝

前端工程师


下一篇 »
Js原型链图解

引用和评论

0 条评论