破解前端面试(80% 应聘者不及格系列):从闭包说起

(function(){
/*for(var i = 0; i < 5; i++){
    setTimeout(function(){
        console.log(new Date(), i)
    },1000)
}

console.log(new Date(), i);
//55555

for(var i = 0; i < 5; i++){
    setTimeout(function(){
        console.log(i + '=>')
    },1000)
}

console.log(i + ' ->');*/
//5->5=>5=>5=>5=>5=>

})();
//输出5,0,1,2,3,4
(function(){
    /*for(var i = 0; i < 5; i++){
        (function(i){
            setTimeout(function(){
                console.log(',' + i);
            }, 1000);
        })(i);
    }
    console.log(i);*/
    
    /*var name = 'aaa';
    for(var i = 0; i < 5; i++){
        setTimeout(function(i,name){
            console.log(i + name);
        },1000,i,name);
    }
    console.log(i);*/
    
    /*var output = function(i){
        setTimeout(function(){
            console.log(i);
        }, 1000);
    }
    for(var i = 0; i < 5; i++){
        output(i);
    }
    console.log(i);*/
    /*for(let i = 0; i < 5; i++){
        setTimeout(function(){
            console.log(i);
        }, 1000);
    }
    console.log(i);    //报错了*/
    /*let name = 'aadfdfa';
    function alertName(){
        alert(name);
    }
    alertName();*/
    /*for(var i = 0; i < 5; i++){
        
    }
    var i = 0;
    var inter = setInterval(function(){
        if(i <= 5){
            console.log(i)
            i++
        }else{
            clearInterval(inter);
        }
    },1000);
    */
    /*for(var i = 0; i < 5; i++){
        (function(j){
            setTimeout(function(){
                console.log(j);
            }, 1000*j);
        })(i);
    }
    setTimeout(function(){
        console.log(i);
    }, 1000*i)*/
    //promise版本
    /*const tasks = [];
    for(var i = 0; i < 5; i++){
        ((j)=>{
            function resolve(){
                console.log('aaaaaaaaa');
            }
            tasks.push(new Promise((resolve)=>{
                setTimeout(()=>{
                    console.log(j);
                    resolve();
                },1000*j);
            }));
        })(i);
    }
    Promise.all(tasks).then(()=>{
        setTimeout(function(){console.log(i);}, 1000)
    });*/
    //promise简洁版
    /*const tasks = [];
    const output = (i)=> new Promise((resolve)=>{
            setTimeout(()=>{
                console.log(i);
                resolve();
            }, 1000*i);
        });
    
    for(var i = 0; i < 5; i++){
        tasks.push(output(i));
    }
    
    Promise.all(tasks).then(()=>{
        setTimeout(()=>{
            console.log(i);
        }, 1000)
    })*/
    const sleep = (timeStamp) => new Promise((resolve)=>{
        setTimeout(resolve, timeStamp);
    })
    (async ()=>{    //报错了,可能是我的babel还不支持,谢谢
        for(var i = 0; i < 5; i++){
            if(i > 0){
                await sleep(1000);
            }
            console.log(i);
        }
        
        await sleep(1000);
        console.log(i);
    })()
})();

 

posted on 2017-04-16 20:18  宝清老窖  阅读(182)  评论(0编辑  收藏  举报