JavaScript中的var、let和const
2019-07-18 本文已影响0人
爱讲鸡汤的油腻大叔
首先,我们必须搞清楚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"
}