for(var i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i);
});
}
console.log('a');
要想输出0,1,2,3,4 怎么改造:
1. let 定义,形成闭包
for(let i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i);
});
}
2. 闭包,立即执行函数
for(let i = 0; i < 5; i++) {
(function(){
setTimeout(function () {
console.log(i);
});
})(i)}
3. try...catch...
for(let i = 0; i < 5; i++) {
try{
throw(i)
}catch(j){
setTimeout(function () {
console.log(j);
});
}}
4. promise
async function f() {
for(var i=0;i<5;i++){
await new Promise((resolve => {
console.log(i);
resolve();
}))
}
}
f();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义