《ECMAScript 6 入门优化版》
第1章 ECMAScript 6简介
第2章 let和const命令
(1)let和const命令
let命令不存在变量提升、存在暂时性死区、不允许重复声明。
const命令声明的变量不能改变,但是对象时可以改变属性。
es6中声明的全局变量不再属于全局对象的属性。
第3章 变量的解构赋值
(1)数组的解构赋值
Let [x,y,z] = new Set([‘a’,’b’,’c’]);这种也可以,只要数据结构中具有Iterator接口。
解构赋值允许指定默认值,对应值为undefined时默认值生效。
(2)对象的解构赋值
var { bar, foo} = {foo:’aaa’,bar:’bbb’};
({x} = {x:1});可以使用圆括号()避免js引擎将其解释为代码块。
(3)字符串的解构赋值、数值和布尔值的解构赋值、函数参数的解构赋值
(4)圆括号问题:
三种情况不能使用圆括号,分别是:变量声明语句中,模式不能带有括号;函数参数中,模式不能带有括号;不能将整个模式或嵌套模式中的一层,放在圆括号中。
(5)用途
有以下几种:变换变量的值;从函数返回多个值;函数参数的定义;提取json数据;函数参数的默认值;遍历Map结构;输入模块的指定方法;
第4章 字符串的扩展
第5章 正则的扩展
第6章 数值的扩展
第7章 数组的扩展
第8章 函数的扩展
(1)rest参数:…变量,这个变量是一个数组,将一个参数序列变为一个数组
(2)扩展运算符:…变量,这个变量是一个数组,将数组变为一个参数序列(展开数组)
应用:合并数组、与解构赋值结合、函数返回值、字符串、类似数组的对象、map和set结构,Generator函数
(3)箭头函数
注意点:1.函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象;2.不可以当作构造函数;3.不可以使用arguments对象;4.不可以使用yield命令;
第9章 对象的扩展
(1)属性的简洁表示法
(2)属性名表达式:属性名表达式与简洁表示法不能同时使用
(3)name属性
(4)Object.is():判断两个值是否相等
(5)Object.assign():用于将源对象的所有可枚举属性,复制到目标对象
第10章 Symbol
(1)独一无二的值
(2)作为属性名的Symbol
(3)消除魔术字符串
(4)属性名的遍历
第11章 Proxy和Reflect
(1)proxy用于修改某些操作的默认行为,可以理解成在目标对象之前架设了一层“拦截”
(2)reflect的方法与proxy的方法一一对应
第12章 二进制数组
(1)ArrayBuffer对象
第13章 Set和Map数据结构
第14章 Iterator和for...of循环
第15章 Generator函数
第16章 Promise对象
第17章 异步操作Async函数
第18章 Class
第19章 修饰器
第20章 Module
第21章 编程风格
(1)块级作用域:用let和const
(2)字符串:静态字符串一律使用单引号,不使用双引号,动态字符串使用反引号
(3)解构赋值:返回多个值优先使用对象解构
(4)对象:多行定义的对象,最后一行末尾加逗号。对象的属性和方法,尽量采用简洁表达法
(5)数组:使用扩展运算符(...)拷贝数组
(6)函数:立即执行函数可以写成箭头函数形式;需要使用函数表达式的场合,尽量使用箭头函数替代,因为这样更简洁、而且绑定了this。
(7)Map结构:需要key:value结构时
(8)Class:总是用class取代需要prototype操作
(9)模块:使用import,不要使用require
(10)ESLint的使用
第22章 读懂ECMAScript规格