var 与 let 的区别
此时,您可能会想:“为什么我们需要两个关键字来定义变量?”,“为什么有 var 和 let 呢?"。
原因是有些历史性的。 回到最初创建 JavaScript 时,是只有 var 的。 在大多数情况下,这种方法可以接受, 但有时在工作方式上会有一些问题——它的设计会令人困惑或令人讨厌 。 因此,let 是在现代版本中的 JavaScript 创建的一个新的关键字,用于创建与 var 工作方式有些不同的变量,解决了过程中的问题。
下面解释几个简单的差异。 我们现在不会讨论所有的差异,但是当您了解有关 JavaScript 的更多信息时,您将开始发现它们(如果您现在真的想要阅读它们,请随时查看我们的参考页面)。
首先,如果你编写一个声明并初始化变量的多行 JavaScript 程序,你可以在初始化一个变量之后用 var 声明它,它仍然可以工作。 例如:
myName = 'Chris';
function logName() {
console.log(myName);
}
logName();
var myName;
Note: 只有在 web 文档中运行多行 JavaScript 时才会有这种效果,当在 JavaScript 控制台中键入单独的行,这将不起作用。
这是由于变量的提升,更多细节请阅读变量提升。
但提升操作不在适用于 let 。如果将上面例子中的 var 替换成 let 将不起作用并引起一个错误。 这是一件好事——因为初始化后再声明一个变量会使代码变得混乱和难以理解。
其次,当你使用 var 时,可以根据需要多次声明相同名称的变量,但是 let 不能。 以下将有效:
var myName = 'Chris';
var myName = 'Bob';
但是以下内容会在第二行引发错误:
let myName = 'Chris';
let myName = 'Bob';
你必须这样做:
let myName = 'Chris';
myName = 'Bob';
同样,这是一个明智的语言决定。没有理由重新声明变量——这只会让事情变得更加混乱。
出于这些以及其他原因,我们建议您在代码中尽可能多地使用 let,而不是 var。因为没有理由使用 var,除非您需要用代码支持旧版本的 Internet Explorer (它直到第 11 版才支持 let ,现代的 Windwos Edge 浏览器支持的很好)。