返回

洞察JS ES6变量声明:let & const 助阵区块级作用域

前端

一、洞悉 JavaScript 中的块级作用域

JavaScript 一直以来缺乏块级作用域,这意味着变量在函数或块中声明后,在整个函数或块中都有效。这可能导致变量冲突和意外的行为。ES6 中引入的 let 和 const 解决了这一问题,它们带来了块级作用域,允许在块中声明变量,并且只在该块中有效。

二、熟知 let 和 const 的妙用

1、let:可变且限定

let 声明的变量可以在块内重新赋值,但不能在块外访问。这使得 let 非常适合在循环或条件语句等块中声明临时变量。

2、const:恒定且限定

const 声明的变量是常量,不能重新赋值。这使得 const 非常适合声明不会改变的值,例如数学常量或对象属性。

三、理解暂时性死区

let 和 const 变量声明都存在暂时性死区,这意味着在变量声明之前使用该变量会报错。暂时性死区从变量声明开始,一直持续到变量被初始化。

四、全面认识 globalThis

globalThis 是 JavaScript 中的顶级对象。在浏览器中,globalThis 等同于 window 对象。在 Node.js 和 Web Worker 中,globalThis 分别等同于 global 对象和 self 对象。

五、代码实例领略概念

// 块级作用域示例
{
  let x = 10;
  const y = 20;

  console.log(x); // 10
  console.log(y); // 20
}

// console.log(x); // ReferenceError: x is not defined
// console.log(y); // ReferenceError: y is not defined

// 暂时性死区示例
console.log(z); // ReferenceError: z is not defined

let z = 10;

console.log(z); // 10

// globalThis 示例
console.log(globalThis === window); // true (in browser)
console.log(globalThis === global); // true (in Node.js)
console.log(globalThis === self); // true (in Web Worker)

结语

ES6 中的 let 和 const 为 JavaScript 带来了块级作用域,暂时性死区和 globalThis 等概念。这些概念的引入使得 JavaScript 代码更加清晰、易懂和可维护。