JavaScript中的变量声明:const

2020-11-13大约5分钟

除了前面我们讨论的用varlet来声明变量,ES6还引入了const关键字来声明所有类型的数据的变量,例如布尔值,对象,整数等。

const

  • 用const声明的变量,需要在声明时进行初始化。
  • 不能再次声明相同的变量。
  • 不能对变量再次赋值。
  • 声明了一个块作用域变量。

1. 语法

const声明的变量不能像varlet在任意的地方初始化,而是需要在声明时进行初始化。

const x = 5;
console.log(x); //5

const y;
y = 10; // SyntaxError: Missing initializer in const declaration

2. 不能重新声明和赋值

使用const我们无法重新声明或重新初始化变量,这将引发JavaScript错误。

const a = true;
const a = false;
console.log(a); // SyntaxError: Identifier 'a' has already been declared

const a = true;
a = false; //TypeError: Assignment to constant variable.

const arr = [1,2,3,4];
arr = [5,4,56]; //TypeError: Assignment to constant variable.

注意 :如果给const声明的常量初始化之后,是不能在更改的,但是如果是可以改变的对象,则是可以更改这个常量所引用的对象的,所以我们可以理解为不能改变const变量的引用,所引用的对象则是可能更改的。请参阅以下示例:

const arr = [1,2,3,4];
arr.push(5);
console.log(arr); // [1,2,3,4,5]

3. 作用域

const声明带块作用域的变量。

const a = 2;
if (a > 1) {
  const fav = "apple";
  console.log(fav); // apple
}
console.log(fav); // ReferenceError: fav is not defined

在这里const创建了一个块作用域,这就是为什么fav只能在if语句内部而不是外部访问的原因。

结论

包括本文在内,我们已经涵盖了JavaScipt中的所有三个变量声明varletconst。在下一篇文章中,我们将讨论一个基本的Javascript面试题:“ JavaScript中的var、let和const声明之间有什么区别?”。