const是ES6中新增的用于声明常量的关键字。所谓常量就是值(内存地址)不能变化的量。const关键字声明的常量具有块级作用域,声明常量时必须赋值,声明常量并赋值后常量的值不能修改。
1.const关键字声明的常量具有块级作用域
演示const关键字声明的常量块级作用域效果,具体代码如下:
<script>
if (true) {
const a = 10;
wconsole.log(a); //输出结果:10
}
console.log(a); //报错,a未定义
</script>
2.const关键字声明常量时必须赋值
演示const关键字声明常量时不赋值的情况
<script>
const PI;//报错,常量PI未赋值
</script>
3.const关键字声明常量并赋值后常量的值不能修改
(1)对于基本数据类型(如数值、字符串),一旦赋值,值就不可修改。
<script>
const PI = 3.14;
PI=100;/∥报错,无法对常量赋值
</script>
(2)对于复杂数据类型(如数组、对象),虽然不能重新赋值,但是可以更改内部的值。
<script>
const ary =[100, 200];
ary[0] = 'a';
ary[1] = 'b';
console.log(ary);∥可以更改数组内部的值,结果为['a','b']
ary=['a','b'];∥报错,无法对常量赋值
</script>
let、const、var关键字之间的区别
变量的作用域范围不同
使用var关键字声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。使用let关键字声明的变量和使用const关键字声明的常量都具有块级作用域。
变量提升
使用var关键字声明的变量存在变量提升,可以先使用再声明。使用let关键字声明的变量和const关键字声明的常量不存在变量提升功能,只能先声明再使用。
值是否可以更改
使用var关键字和let关键字声明的变量,可以更改变量的值,但使用const关键字声明的常量,不能更改常量值对应的内存地址。
在编写程序的过程中,如果要存储的数据不需要更改,建议使用const关键字,如函数的定义、T值或数学公式中一些恒定不变的值。由于使用const声明的常量,其值不能更改,且JavaScript解析引擎不需要实时监控值的变化,所以使用const关键字要比let关键字效率更高。