ES6:ECMAScript 的第6个版本
相比较之前的版本,ES6中新增了两个javascript关键字,即:let 和 const
let
作为ES6的新增关键字,let有着与我们常见的var关键字不同的特性:
1、 var声明的全局变量是全部挂载到window中的,会造成全局污染,但是let声明的变量不会挂到window中,也就不会造成全局变量的污染
2、 let声明的变量只在let命令的代码块中生效。列如:
{
let a = 100;
console.log(a);
}
console.log(a);
该代码运行结果如下图:
当我们运行后就可以在控制台看见上图结果:第一个a打印的是a的值100,打印第二个a则报错:NOT DEFINED(未定义),说明在花括号结束后,也就是出了这个代码块之后,let声明的变量就失效了。
3、 let关键字不允许重复声明,但是var关键字可以:
let a = 10;
let a = 20;
var b = 10;
var b = 20;
console.log(a);// 输出结果报错为 :Identifier 'a' has already been declared
console.log(b); //输出结果为 : 4
const
作为ES6中新增的第二个关键字,const的特性与let一样,并且还有其额外的特性:
1、 var声明的全局变量是全部挂载到window中的,会造成全局污染,但是const声明的变量不会挂到window中,也就不会造成全局变量的污染。
2、 const声明的变量只在const命令的代码块中生效。
3、 const关键字不允许重复声明,但是var关键字可以
4 、 不允许被修改,不允许改变内存空间的地址。
const 声明一个只读变量,声明之后不允许改变。意味着,一旦声明必须初始化,否则会报错:
const a = "3";
console.log(q) // 输出结果 : 3
const b; //结果报错: SyntaxError: Missing initializer in const declaration
5、 const声明和赋值必须一次性完成,并且后期不允许改变存储空间的地址。代码迁移从ES5到ES6能使用const就是用const 不能使用就用let,常量效率比变量高。