有关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)
// })
}

浙公网安备 33010602011771号