1997 ES1.0
1998 ES2.0
1999 ES3.0------初学的都是这个版本
2000 ES4.0------不过没有通过,很多内容在ES6中实现,也是ES6的起点
2009 ES5------与ES3基本保持兼容
2011 ES5.1------成为国际标准
2015 ES6------成为国际标准
Babel:ES6转码器
将ES6---->ES5
Traceur转码器(来自Google):将ES6---->ES5
let:
1、声明的变量只在代码块内有用,以前js是没有块级作用域的概念的
2、没有变量提升,一定要““先声明后使用””
3、暂时性死区
4、不允许在相同作用域声明同一个变量(要理解相同作用域)
const:
1、声明常量,不可改变
2、只声明不赋值会报错
3、作用域和let相同
4、也存在暂时性死区
5、也不可重复声明变量
6、于对象而言,存的是地址,不变的也是地址
ES6有6种声明变量的方法:
1)var
2)function
-----------以上两种声明的全局变量是window对象的属性
3)let
4)const
5)class
-----------以上三种生命的全局变量不是window对象的属性
6)import
解构赋值:
1、数组的解构赋值:
从数组中提取值,按照位置顺序给各个变量赋上
允许指定默认值
2、对象的解构赋值:
由于属性没有次序,因此变量名必须和属性名相同
不同名时,采用 属性名:变量名 结构
也可以指定默认值
3、字符串的解构赋值:
类似数组
4、数值和布尔值的解构赋值:
数值或者布尔值,先转换为对象
5、函数参数的解构赋值: