【JS基础】JS中 Let 和 Const 变量区别

2023-10-16 20:07:06 浏览数 (1)

在 JavaScript 中,letconst 都是用于声明变量的关键字,但它们之间有一些重要的区别:

可变性:

  • let 允许在声明之后更改变量的值。这意味着您可以重新为使用 let 声明的变量分配任何类型的值:
代码语言:javascript复制
let x = 1;
x = "text";
  • const 用于声明常量,一旦声明了变量,它的值就不能改变。尝试更改使用 const 声明的变量的值将导致错误:
代码语言:javascript复制
const x = 1;
x = "text"; // 抛出错误(TypeError: Assignment to constant variable)

作用域:

  • letconst 都具有块级作用域。这意味着在使用它们声明变量时,变量仅在声明它们的代码块(例如:函数、循环或其他控制结构)中可用。这与使用 var 声明的变量不同,因为它们具有函数作用域:
代码语言:javascript复制
if (true) {
  let x = 1;
  const y = 2;
}
console.log(x); // ReferenceError: x is not defined
console.log(y); // ReferenceError: y is not defined

变量提升:

  • 在执行代码之前,var 声明的变量会被提升到函数作用域的顶部,但它们的初始化仍然保留在原始位置。这意味着,在赋值之前,可以访问使用 var 声明的变量(尽管此时它们的值是 undefined)。相反,letconst 声明的变量也会被提升,但是在被赋值之前,它们将处于临时性死区(TDZ),在这个阶段赋值操作将引发错误。
代码语言:javascript复制
console.log(x); // undefined
console.log(y); // ReferenceError: Cannot access 'y' before initialization
console.log(z); // ReferenceError: Cannot access 'z' before initialization

var x = 1;
let y = 2;
const z = 3;

总之,letconst 是为了解决 var 声明的变量提升、作用域等问题而引入的新特性。当您需要一个仅在代码块中可用的且易于更改的变量时,使用 let;当您需要一个仅在代码块中可用且不可更改的变量时,使用 const。这有助于使代码更加健壮且易于理解。

Ref: 机器回答.

0 人点赞