有关for循环输出数字的面试题
for (var i = 0; i< 5; i++){
setTimeout(() => {
console.log(i);
}, 1000)
}
这是原题,怎么使他说出0,1,2,3,4
for (var i = 0; i< 5; i++){
(function(){
console.log(i)
})(i)
}
for (var i = 0; i< 5; i++){
(function(){
console.log(Number(this))
}.bind(i))()
}
for (var i = 0; i< 5; i++){
(function(){
console.log(Number(this))
}.call(i))
}
for (var i = 0; i< 5; i++){
new Promise(()=>{
console.log(i)
})
}
还有一种就是将var改成let这道题早就想写下了,
带着setTimeout
for (var i = 0; i< 10; i++){ // (function(){ // let a = i // setTimeout(()=>{ // console.log(a) // },1000) // })(i) // (function(){ // setTimeout(()=>{ // console.log(Number(this)) // },1000) // }.bind(i)()) // (function(){ // setTimeout(()=>{ // console.log(Number(this)) // },1000) // }.call(i)) // new Promise(function(){ // let a = i // setTimeout(()=>{ // console.log(a) // },1000) // }) }