ES6-----for循环中setimeout,var与let的区别

for (var i = 0; i < 5; i++) { 
	setTimeout(function () { 
		console.log(i) 
	}, 2000) 
} 
for (let i = 0; i < 5; i++) { 
	setTimeout(function () { 
		console.log(i) 
	}, 2000) 
}

输出:

5 5 5 5 5
1 2 3 4 5

原因:
let有块级作用域,使用后该变量就释放了。而var的变量始终都是那一个,在延迟输出的时候,变量早已变成5,所以打印五个5。

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页