首先,我们必须搞清楚ECMAScript
和JavaScript
ECMA
是一个将信息标准化的组织,简单来说,就是JavaScript
被提交到ECMA
进行标准化,由此诞生一个新的语言标准,即ECMAScript
,而JavaScript
是该标准下的实现
我们常说的es5是指2009
年12
月发布的ECMAScript5
,es6
指2015
年6
月发布的ECMAScript2015
,后将ECMAScript
改名为ECMAScript6
var
、let
、const
都是声明变量的关键字,let
、const
是es6
引入的,那他们之间互相有什么区别呢?
es6
出现之后,我们更应该少用var关键字,为什么呢?
到es5
为止,我们可以在代码中任意位置声明变量,甚至重写已经声明的变量
var fw = "Vue";
var fw = "React";
console.log(fw); => React
但如果改用let
或const
关键字声明,会抛出变量已经被声明的错误
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"
}