JavaScript中let和var有什么区别?请举例说明
你好!我开始学习JavaScript,遇到了一些困惑。我知道以前大家都用`var`声明变量,而现在现代教程推荐使用`let`。看起来两者做的是同一件事——创建变量。但当我写代码时,它们的行为却不同。
下面这个例子让我很困惑:
```javascript
var x = 10;
if (true) {
var x = 20; // 我以为这是一个新变量
console.log(x); // 20
}
console.log(x); // 20 — 为什么不是10?
```
如果我把`var`换成`let`:
```javascript
let x = 10;
if (true) {
let x = 20;
console.log(x); // 20
}
console.log(x); // 10 — 这里就是10,和预期一样
```
为什么会这样?我还听说过“提升”(hoisting)——这也有关吗?请为我这个初学者解释一下,什么时候用`let`,什么时候用`var`,以及它们的关键区别。我希望能理解这一点,以免将来犯错。
<<>>