ES6个人回顾
es6
1. let 、const、块级作用域
a. let、const不具备变量声明提升
b. let、const只在最靠近的一个块中生效({})
c. 当使用const声明时,请使用大写变量 ??
d. const声明时必须被赋值
2. 箭头函数
a. () => data 不需要return 语句
b. () => {} 箭头函数 this 指向最近调用它的对象
3. 函数参数默认值 (此前不知道此概念)
a. (a = 1, b) => {}
4. Spread / Rest 操作符
a. 当被用于迭代器中时,它是一个 Spread 操作符 function (x, y, z) {}
b. 当被用于函数传参时,是一个 Rest 操作符 function (...arg) {}
5. 对象语法扩展()
a. 简写变量 { a, } = { a: a, }
b. 属性可以使用表达式计算值 { ['make' + 变量名 ]: true, }
c. 忽略 `function` 关键词简写对象函数 { a: function () {}, } = { a() {}, }
d. 拓展运算符 {...} 将参数对象中所有可以遍历的属性拿出来,然后拷贝给新对象,或者合并对象
6. 支持二进制和八进制的字面量(有印象)
a. 在数字前面添加 0o 或者0O 即可将其转换为八进制值
b. 在数字前面添加 0b 或者0B 即可将其转换为八进制值
7. 解构赋值(知道但很少用)
a. 解构可以避免在对象赋值时产生中间变量
b. [a, b, c] = [1, 2, 3]
c. { a: a, b: b, c: y } = { a: 1, b: 2, y: 3 }
8. 允许在对象中使用 super 方法 (此前不知道)
a. 类似于extend继承中的 super() ,但可作用域原型对象
b. fathrer = { foo(){} }; child = { foo(){ super.foo() } }; Object.setPrototypeOf(child, fathrer);
9. 模板语法 (常用)
a. `` 类似于字符串
b. ${...} 使用变量或js语句
10. for...of 和 for...in (知道,但很少用)
a. for...of 用于遍历对象的属性值
b. for...in 用于遍历对象的属性名
11. Map 和 WeakMap(知道Map,不知道WeakMap,且没怎用Map)
a. 事实上每个对象都可以看作是一个 Map
b. 一个对象由多个 key-val 对构成,在 Map 中,任何类型都可以作为对象的 key
c. WeakMap 的所有 key 必须是对象
12. Set 和 WeakSet(知道Set,主要是去重字符串等原始类型)
a. Set 对象是一组不重复的值,重复的值将被忽略
b. 可以通过 forEach 和 for...of 来遍历 Set 对象
c. 在 WeakSet 中的对象只允许出现一次
13. 类(学习时用过,工作后基本没怎么用)
14. Symbol(知道但没怎用)
a. ES6 中提出 symbol 的目的是为了生成一个唯一的标识符
15. 迭代器 Iterators
a. 迭代器允许每次访问数据集合的一个元素,当指针指向数据集合最后一个元素时,迭代器便会退出。
b. 它提供了 next() 函数来遍历一个序列,这个方法返回一个包含 done 和 value 属性的对象。
c. ES6 中可以通过 Symbol.iterator 给对象设置默认的遍历器,无论什么时候对象需要被遍历,执行它的 @@iterator 方法便可以返回一个用于获取值的迭代器
d. 你可以通过 [Symbol.iterator]() 自定义一个对象的迭代器
16. Generator
a. 它允许一个函数返回的可遍历对象生成多个值
b. * 语法和一个新的关键词 yield,每次执行 yield 时,返回的值变为迭代器的下一个值
17. Promise
a. 一个 Promise 是一个等待被异步执行的对象,当它执行完成后,其状态会变成 resolved 或者rejected
b. 每一个 Promise 都有一个 .then 方法,这个方法接受两个参数,第一个是处理 resolved 状态的回调,一个是处理 rejected 状态的回调
18. 模块化
a. export 导出
b. import 导入
c. node.js 并不支持 es6 的 import 预发
d. export 变量名 as 变量名 改名导出
e. import * as 变量名 全导并通过对象形式调用
f. export default 默认导入
g. import 变量名 as 变量名 防止重名导入
19. babel环境
a. 广泛的转码器,可以将ES6降维成ES5
b. npm install --global babel-cli 安装全局 babel脚手架
参考文章:https://www.runoob.com/w3cnote/es6-concise-tutorial.html
参考文章:https://zhuanlan.zhihu.com/p/478171082