天天看点

js学习笔记_闭包

闭包:指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。

闭包小实例

/**
     * 闭包 在函数中可以访问定义在该函数之外的变量
     * 可以防止变量被篡改
     * @returns {Function}
     */
    function myFun(){
        var msg="msg in myFun";
        return function(){
            return msg;
        }
    }
    var msg='msg in window';
    d((myFun())());  //msg in myFun


    //1利用闭包累加求和
    function myFun2(n){
        var total=;
        var i=;
        return function(){
            total+=i++;
            if(i<=n){
                arguments.callee();
            }
            return total;
        }
    }
    d((myFun2())()); //55

   //2利用闭包模拟id自增
    function autoId(){
        var i=;
        return function() {
            return i++;
        }
    }
    var fn=autoId();
    d(fn()); //1
    d(fn()); //2
    d(fn()); //3
    d(fn()); //4
    d(fn()); //5
    //ps :d=function(i){console.debug(i)}
           

继续阅读