求解一个关于闭包的 JS 代码的问题

查看 191|回复 11
takeshima
OP
  
第二个函数 i++掉了,应该是这个
const fn2 = () => {
let i = 0
while (i  console.log(i))
i++
}
}
ochatokori   
for 那段是相当于把 i 这个变量扔到大括号里面声明再初始化,而又因为 let 是块级作用域的特性,相当于 for 多少次就声明多少个,自然值就不一样。
下面这块估计你是漏写了一个 i++,这里涉及到 settimeout 是宏任务异步执行的问题,只有 while 循环结束之后,settimeout 里的 console.log 才会去取 i 值,结果就是取到了所有 i++ 执行完之后的值了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部