haizlin/fe-interview

[js] 第272天 用不同的方法改装下面的代码,使它的结果输出为0-4[代码]

Opened this issue · 7 comments

第272天 用不同的方法改装下面的代码,使它的结果输出为0-4[代码]

我也要出题

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

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

使用 setTimeout 的第三个入参(有兼容问题),使用自运行函数,抽离成新方法

存个数组延时后使用 shift 获取

补充两个

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

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

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

let output = (i) => {
    return new Promise(resolve => {
        setTimeout(() => {
            console.log(i)
            resolve()
        },1000)
    })
}
(async function () {
    for (var i = 0; i < 5;i++) {
        await output(i)
    }
})()
let task = []
let output = (i) => {
    return new Promise(resolve => {
        setTimeout(() => {
            console.log(i)
        },1000*i)
    })
}
for (var i = 0; i < 5;i++) {
    task.push(output(i))
}
Promise.all(task)

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

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