JavaScript 面试题
目录

JavaScript 中 let 和 const 的块级作用域特性?

· 约 3 分钟读完 · 第 434 / 507 章

推荐答案

在 JavaScript 中,let 和 const 都引入了块级作用域的概念。块级作用域是指变量在声明它们的块(通常是由 {} 包围的代码块)内有效,超出这个块就无法访问。

  • let:用于声明一个块级作用域的变量,变量的值可以被重新赋值。
  • const:用于声明一个块级作用域的常量,常量的值在声明后不能被重新赋值。

示例代码

本题详细解读

块级作用域的定义

块级作用域是指变量在声明它们的块(通常是由 {} 包围的代码块)内有效,超出这个块就无法访问。这与 var 的函数作用域不同,var 声明的变量在整个函数内都有效。

let 的特性

  • 块级作用域:let 声明的变量只在声明它的块内有效。
  • 可重新赋值:let 声明的变量可以在声明后重新赋值。
  • 暂时性死区:在块级作用域内,let 声明的变量在声明之前是不可访问的,这被称为暂时性死区(Temporal Dead Zone, TDZ)。

const 的特性

  • 块级作用域:const 声明的变量只在声明它的块内有效。
  • 不可重新赋值:const 声明的变量在声明后不能被重新赋值。如果尝试重新赋值,会抛出错误。
  • 必须初始化:const 声明的变量必须在声明时初始化,否则会抛出错误。
  • 暂时性死区:与 let 类似,const 声明的变量也存在暂时性死区。

示例代码分析

在这个例子中,a 和 b 都是在 if 语句的块级作用域内声明的。因此,在 if 语句块外访问 a 和 b 会导致错误,因为它们已经超出了作用域范围。

总结

  • let 和 const 都引入了块级作用域的概念。
  • let 声明的变量可以重新赋值,而 const 声明的变量不能重新赋值。
  • 两者都存在暂时性死区,即在声明之前不可访问。