ES6笔记

http://jspang.com/2017/06/03/es6/

一、let、const

     1、let    不存在变量提升,暂时性死区

     2、块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了。         

 1 // IIFE 写法
 2 (function () {
 3   var tmp = ...;
 4   ...
 5 }());
 6 
 7 // 块级作用域写法
 8 {
 9   let tmp = ...;
10   ...
11 }

        3、const申明的是只读的常量,一旦申明,无法改变。一旦申明,就必须初始化,不能后期赋值

        4、const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。

        5、const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。因此,将一个对象声明为常量必须非常小心。

         6、顶层对象,在浏览器环境指的是window对象,在Node指的是global对象。ES5之中,顶层对象的属性与全局变量是等价的。

         7、ES6一方面规定,为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从ES6开始,全局变量将逐步与顶层对象的属性脱钩。

          8、global对象

二、变量的解构赋值

对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

三、扩展运算符(...)

四、字符串模板 (${})

五、新增的一些数组方法  Array.from()、Array.of()、find()、fill()、for...of

六、箭头函数

七、ES6中的对象

八、Symbol

九、set数据结构,和java里面的set一样

十、map数据结构,和java里面的map一样

十一、Proxy进行预处理

十二、Promise

十三、class 仿照的java里面的

十四、import 和export

posted @ 2017-09-18 11:12  zhaobao1830  阅读(130)  评论(0编辑  收藏  举报