📅  最后修改于: 2023-12-03 15:16:08.961000             🧑  作者: Mango
在 JavaScript 中,let
和 const
是两种用于声明变量的关键字。它们在 ES6(或称为 ECMAScript 2015)中被引入,并提供了一些新的功能和约束,相对于旧的 var
关键字更加灵活和安全。
let
关键字用于声明一个块级作用域的变量。与 var
不同,使用 let
声明的变量只在当前代码块中有效,不会被提升至全局作用域。
{
let x = 10;
console.log(x); // 输出 10
}
console.log(x); // 抛出 ReferenceError: x is not defined
let
的作用域仅限于当前代码块(例如,if语句、循环等),允许我们在不同的代码块中使用相同名称的变量,而不会产生冲突。
if (true) {
let x = 10;
console.log(x); // 输出 10
}
{
let x = 20;
console.log(x); // 输出 20
}
此外,使用 let
声明的变量,可以在同一个作用域中重新赋值,但不能重新声明。
let x = 10;
console.log(x); // 输出 10
x = 20;
console.log(x); // 输出 20
let x = 30; // 抛出 SyntaxError: Identifier 'x' has already been declared
const
关键字也用于声明块级作用域的变量,与 let
类似,但有一个区别:使用 const
声明的变量必须进行初始化,并且不能重新赋值。
const x = 10;
console.log(x); // 输出 10
x = 20; // 抛出 TypeError: Assignment to constant variable.
const
声明的变量是常量,一旦初始化后,就不能再修改其值。这种声明方式适用于那些不需要改变的常量,例如固定的配置值、数学常数等。此外,const
也可以用于声明对象和数组,但这并不意味着无法修改对象或数组内部的属性。
const person = {
name: 'John',
age: 25
};
console.log(person.name, person.age); // 输出 "John", 25
person.age = 26;
console.log(person.age); // 输出 26
person = {}; // 抛出 TypeError: Assignment to constant variable.
let
关键字用于声明块级作用域的变量,在同一作用域内不能重复声明,可以重新赋值。const
关键字用于声明块级作用域的常量,必须初始化且不能重新赋值。当声明对象或数组时,仍然可以修改其内部的属性或元素。使用 let
和 const
可以避免变量声明提升和意外的全局变量污染,以及更好地控制变量的修改范围,提高代码的可读性和安全性。