闭包

作者: chengfengwang | 来源:发表于2017-06-30 18:02 被阅读0次

    闭包是什么?

    闭包就是
    1.在函数内部声明一个函数
    2.它能读取所在函数内部变量
    3.再把这个函数return出来

    function fn(){
       var n=1;
       function fb(){
    }
       return fb
    }
    var result=fn()
    
    var fnArr = [];
    for (var i = 0; i < 10; i++) {
        (function(j){
            fnArr[i] = function(){
                console.log(j);
            }
        })(i)
    }
    console.log( fnArr[3]() ); // 输出 3
    //方法二:
    var fnArr = [];
    for (var i = 0; i < 10; i++) {
        fnArr[i] = (function(){
            var j = i;
            return function(){
                console.log(j);
            }
        })()
    }
    
    console.log( fnArr[7]() ); // 输出 7
    

    下面这段代码输出?如何输出delayer: 0, delayer:1...(使用闭包来实现)

    for(var i=0;i<5;i++){
        setTimeout(function(){
             console.log('delayer:' + i );
        }, 0);
        console.log(i);
    }
    
    //答案:
    for(var i=0;i<5;i++){
        (function (){
            var j=i    //把每个 i 保存在,多个独自的作用域中,调用函数时,就在自己的作用于中去找
            setTimeout(function(){
             console.log('delayer:' + j ); // delayer:5
        }, 0);
        console.log(i); // 0 1 2 3 4
        })(i)
        
    }
    

    相关文章

      网友评论

          本文标题:闭包

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