for(let i=0;i<2;i++){
setTimeout(function(){
console.log(i)
},100
);
}
for(var i=0;i<2;i++){
setTimeout(function(){
console.log(i)
},100
);
}
答案:
0 1 1 1
因为js是单线程运行,代码从上往下执行,在遇到异步操作会将代码放到执行栈中,在同步代码执行完后执行异步代码,此题中let有自己的作用于,所以每一个i都有值,var没有自己的作用域每一次声明都会覆盖上一次的值,综上所述输出的值为0111
错题记录
最新推荐文章于 2023-08-24 11:50:49 发布