返回

ES6语法中的let和const关键字

前端

引言

在ES6中,变量声明有了很大的变化,新增了两个let和const,它们与传统的var关键字有很大的不同。这篇文章将重点介绍let和const关键字的用法,以及它们与var关键字的区别。

let关键字

1. 定义变量

let关键字用于声明变量,与var关键字不同,let声明的变量只能在声明所在的块级作用域内使用。

let x = 10;
if (x > 5) {
  let y = 20;
  console.log(y); // 输出 20
}
console.log(y); // 报错:y未定义

2. 暂时性死区

let声明的变量在进入声明所在的块级作用域之前是无法访问的,这被称为暂时性死区。

console.log(x); // 报错:x未定义

let x = 10;

3. 块级作用域

let声明的变量只在声明所在的块级作用域内有效,出了这个作用域就不能再访问该变量了。

function f() {
  let x = 10;
}

f();
console.log(x); // 报错:x未定义

4. 不能重复声明

let声明的变量不能在同一个块级作用域内重复声明。

let x = 10;
let x = 20; // 报错:x已声明

const关键字

1. 定义常量

const关键字用于声明常量,与let关键字不同,const声明的常量一旦声明就不能再改变。

const PI = 3.14;
PI = 3.15; // 报错:PI是常量,不能改变

2. 块级作用域

const声明的常量只在声明所在的块级作用域内有效,出了这个作用域就不能再访问该常量了。

function f() {
  const PI = 3.14;
}

f();
console.log(PI); // 报错:PI未定义

3. 不能重复声明

const声明的常量不能在同一个块级作用域内重复声明。

const PI = 3.14;
const PI = 3.15; // 报错:PI已声明

let和const与var的区别

特性 var let const
作用域 全局或函数 块级 块级
暂时性死区 没有
重复声明 允许 不允许 不允许
可变性 可变 可变 不可变

何时使用let和const

1. 变量声明

  • 使用let声明变量,当变量的值可能发生改变时。
  • 使用const声明常量,当变量的值不会发生改变时。

2. 块级作用域

  • 使用let和const声明变量,可以实现块级作用域。

3. 暂时性死区

  • 使用let声明变量,可以避免暂时性死区。