ES6全称为ECMAScript 6.0是JavaScript语言的下一代标准,它的目的是让JavaScript语言可以用来编写复杂的大型应用程序,ES6的出现意味着JavaScript拥有更成熟的语法以及使编码更容易的新快捷方式,还有许多新的方法,新的关键字以及数据类型和其他增强功能等,接下来在文章中将为大家详细介绍ES6中的一些新特性
【推荐课程:ES6实战视频课程】
let关键字
ES6引入了新的let关键字,它允许我们在函数范围内声明局部变量,例如语句,表达式或内部函数,类似于var但是let不像var那样会发生变量提升,所以,变量一定要在声明后使用,否则就会报错。
let arr=[1,2,3] for (let i = 0; i < arr.length; i++) { console.log(i); }
我们写一个for循环函数然后再循环外写一个语句重用相同的变量名称时结果如下图所示
let arr=[1,2,3] for (let i = 0; i < arr.length; i++) { console.log(i); } let x=i*i;
因为它的作用域仅限于在for循环内,所以外部未声明不可使用。
const关键字
新的const关键字可以声明一个只读的常量,也称为不可变变量,声明以后我们无法重新分配新的内容。
const demo= 12; console.log(demo);
从效果图可以看出当const声明常量后如果我们再一次声明就会报错
但是不可变变量在ES6中并不总是完全不可变的,当我们就像保存一个对象一样保存常量,我们就可以改变它的属性和方法的值
const foo =[];
不改变地址的情况下我们可以给它增加新的内容,const声明的常量,也与let一样不可重复声明。
全局对象的属性
在JavaScript中全局对象就是指的是window对象,全局对象的属性赋值与全局变量的赋值是同一件事,在代码中如果一个变量未被声明则自动成为全局对象。这样的规定带来了很大的问题,没法在编译时就报出变量未声明的错误,只有运行时才能知道。但是ES6很好的解决了这一点,虽然通过let,const关键字来声明全局变量但是它不属于全局对象的属性,这也就意味着全局变量与全局对象的属性在逐步分离
var a=1; console.log(window.a); let b=1; console.log(window.b);
总结: