JavaScript中的变量声明:const
2020-11-13大约5分钟
除了前面我们讨论的用var
和let
来声明变量,ES6还引入了const
关键字来声明所有类型的数据的变量,例如布尔值,对象,整数等。
const
:
- 用const声明的变量,需要在声明时进行初始化。
- 不能再次声明相同的变量。
- 不能对变量再次赋值。
- 声明了一个块作用域变量。
1. 语法
用const
声明的变量不能像var
或let
在任意的地方初始化,而是需要在声明时进行初始化。
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中的所有三个变量声明var
,let
和const
。在下一篇文章中,我们将讨论一个基本的Javascript面试题:“ JavaScript中的var、let和const声明之间有什么区别?”。