JavaScript中的var、let和const

首先,我们必须搞清楚ECMAScriptJavaScript
ECMA是一个将信息标准化的组织,简单来说,就是JavaScript被提交到ECMA进行标准化,由此诞生一个新的语言标准,即ECMAScript,而JavaScript是该标准下的实现
我们常说的es5是指200912月发布的ECMAScript5es620156月发布的ECMAScript2015,后将ECMAScript改名为ECMAScript6
varletconst都是声明变量的关键字,letconstes6引入的,那他们之间互相有什么区别呢?
es6出现之后,我们更应该少用var关键字,为什么呢?
【JavaScript中的var、let和const】es5为止,我们可以在代码中任意位置声明变量,甚至重写已经声明的变量

var fw = "Vue"; var fw = "React"; console.log(fw); => React

但如果改用letconst关键字声明,会抛出变量已经被声明的错误
let和const的行为和一样,唯一的区别在于,用const声明的变量是只读的,也就是我们所说的常量
const PI = 3.1415926535; PI = 3; console.log(PI); =>抛出异常 "PI" is read-only

这里需要注意的是
对于const声明的非对象类型的变量(数、布尔值、字符串等),我们不能改变变量的值
但是对于const声明的对象,只读的const允许我们去修改或重新赋值对象的属性,但变量引用的内存地址不能被修改,也就是不能对这个变量重新赋值
简单来说,就是可以重写对象的属性,但是不能重新这个对象
const FW = { name: "Vue" }; FW.name = "React"; console.log(FW.name); =>React } // 抛出异常 "FW" is read-only FW = { name: "Angular" }

    推荐阅读