除了前面我们讨论的用var
和let
来声明变量,ES6还引入了const
关键字来声明所有类型的数据的变量,例如布尔值,对象,整数等。
const
:用const
声明的变量不能像var
或let
在任意的地方初始化,而是需要在声明时进行初始化。
const x = 5; console.log(x); //5 const y; y = 10; // SyntaxError: Missing initializer in const declaration
使用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]
用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声明之间有什么区别?”。