for循环用let和var的区别
时间: 2023-08-08 18:09:48 浏览: 94
es6 for循环中let和var区别详解
在使用 `for` 循环时,使用 `let` 声明循环变量,可以避免变量提升的问题,也就是说,循环变量仅在循环内部有效。而使用 `var` 声明循环变量,则会存在变量提升的问题,循环变量的作用域会扩大到整个函数内部,可能会导致意外的结果。例如:
```javascript
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
```
上面的代码中,由于使用了 `var` 声明循环变量 `i`,导致 `setTimeout` 回调函数中的 `i` 始终是最终值 `5`,而不是期望的循环变量的值。如果使用 `let` 声明循环变量,则可以避免这个问题:
```javascript
for (let i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
```
上面的代码中,使用了 `let` 声明循环变量 `i`,每次循环都会创建一个新的 `i`,因此 `setTimeout` 回调函数中的 `i` 就是期望的循环变量的值。
阅读全文