此代码记录66次:
(function timer() {
for (var i=0; i<=5; i++) {
setTimeout(function clog() {console.log(i)}, i*1000);
}
})();
Run Code Online (Sandbox Code Playgroud)
但是这段代码......
(function timer() {
for (let i=0; i<=5; i++) {
setTimeout(function clog() {console.log(i)}, i*1000);
}
})();
Run Code Online (Sandbox Code Playgroud)
...记录以下结果:
0
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
为什么?
是因为不同地let绑定到内部范围每个项目并var保持最新值i?