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

查看 170|回复 11
作者:takeshima   
本人 JS 新手,最近学到闭包,还没太弄明白,不懂以下两个函数的运行结果为何不同
const fn1 = () => {
  for (let i = 0; i  console.log(i))
  }
}
const fn2 = () => {
  let i = 0
  while (i  console.log(i))
  }
}
求大佬指点

const, setTimeout, log, console

john2022   
这个和闭包有关么?
realJamespond   
fn2 不死循环?
GentleFifth   
可以先理解作用域,理解了作用域就理解了闭包
molvqingtai   
第二个有结果吗?
Drumming   
GPT4 的回答: https://short.aiayw.com/lqltq7
GPT3.5 的回答: https://short.aiayw.com/iacpzf
仅供参考
takeshima
OP
  
@realJamespond 不好意思,i++打掉了😳
takeshima
OP
  
setTimeout 里面的那个函数捕获了外层的 i 变量,应该是闭包吧,我就比较好奇为什么这两个函数一个 i 跟着外层变了,一个没变
rabbbit   
let i = 0
for (; i  console.log(i))
}
https://es6.ruanyifeng.com/#docs/let
molvqingtai   
我猜你是想问这个?

for (var i = 0; i  console.log(i))
}
for (let i = 0; i  console.log(i))
}
您需要登录后才可以回帖 登录 | 立即注册

返回顶部