参考文章一:https://baijiahao.baidu.com/s?id=1615713540466951098&wfr=spider&for=pc JavaScript运行机制
在文章一的第五部分的2小点处,将var 声明,改为let声明。
console.log('start');
for(let i = 0; i< 5;i++){
setTimeout(() => {
console.log(i);
}, 9000);
}
//会输出什么呢?
结果是:在9.0+s后,输出0,1,2,3,4。
这里面便存在一个TDZ(Temporal Dead Zone暂时死区)的问题。
参考文章二:https://segmentfault.com/a/1190000008213835 理解ES6中暂时死区
参考文章三:https://blog.csdn.net/xingjia001/article/details/84560872 var和let的详解
最后关于函数闭包: 参考文章四 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures