Avatar ·

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`,以及它们的关键区别。我希望能理解这一点,以免将来犯错。 <<>>

主要区别:作用域、提升和重复声明