JavaScript 从浅入深 100 题训练计划--(20)闭包经典面试题

题目:以下代码输出什么?如何让它输出 0 1 2 3 4

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

 1 // 利用 let的块级作用域 
 2 for (let i = 0; i < 5; i++) {
 3   setTimeout(() => console.log(i), 0);
 4 }
 5 // 立即执行函数
 6 for (var i = 0; i < 5; i++) {
 7   (function (j) {
 8     setTimeout(() => console.log(j), 0);
 9   })(i)
10 }
11 
12 for (var i = 0; i < 5; i++) {
13   setTimeout((j) => console.log(j), 0, i);
14 }
15 
16 for (var i = 0; i < 5; i++) {
17   setTimeout(console.log.bind(null, i), 0);
18 }

 

posted @ 2026-08-31 18:30  小新的蜡笔  阅读(3)  评论(0)    收藏  举报