闭包

2017-06-30  本文已影响0人  chengfengwang

闭包是什么?

闭包就是
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)
    
}
上一篇 下一篇

猜你喜欢

热点阅读