ES6 是 JavaScript 的第六个版本,也是现在使用最广泛的版本,它增加了很多新的语言特性和函数库,可以让我们更加方便地编写复杂的 JavaScript 应用程序。其中,let、const、var 是常用的三个关键字,下面我们来详细了解一下它们的使用。
let
let 声明的变量具有块级作用域,意味着只在当前代码块内有效。与 var 不同,如果在同一代码块内使用两次同名的 let 声明变量,将会报错。另外,let 声明的变量不会被提升到函数作用域的顶部。
if (true) {
let a = 1;
}
console.log(a); // 报错:a is not defined
const
const 声明的变量也具有块级作用域,与 let 相同。但是,const 声明的变量一旦被赋值,就不能再次更改。也就是说,const 声明的变量是只读的,如果试图重新赋值,将会报错。
const a = 1;
a = 2; // 报错:Assignment to constant variable.
注意:如果 const 声明的变量是一个对象,那么只是变量不能被重新赋值,而对象的属性是可以被更改的。
const person = { name: 'Tom', age: 18 };
person.age = 20; // 不会报错
console.log(person.age); // 输出 20
var
在 ES6 之前,我们经常使用 var 进行变量声明。var 变量具有函数级作用域,也就是说,在函数内部声明的变量,外部是无法访问到的。另外,如果在同一函数内使用两次同名的 var 声明变量,则后面的变量会覆盖前面的变量。
function test() {
var a = 1;
var a = 2; // 不会报错
console.log(a); // 输出 2
}
在全局作用域内使用 var 声明变量时,该变量会成为 window 对象的属性,可以通过 window.变量名 的方式来访问。
总之,let 和 const 是现代 JavaScript 开发中推荐使用的变量声明方式,优先使用 let,只在需要定义常量时使用 const。var 变量在某些场景下仍然有用,但是尽可能避免在现代 JavaScript 中使用它。