声明
let / const : 块级作用域、不存在变量提升、暂时性死区、不允许重复声明
const : 声明常量,无法修改
解构赋值
class / extend : 类声明与继承
Set / Map : 新的数据结构
异步解决方案:
- function* helloWorld() {
- yield 'hello';
- yield 'world';
- return 'ending';
- }
-
- const generator = helloWorld();
-
- generator.next() // { value: 'hello', done: false }
-
- generator.next() // { value: 'world', done: false }
-
- generator.next() // { value: 'ending', done: true }
-
- generator.next() // { value: undefined, done: true }
- - `await / async`: 是`generator`的语法糖, babel中是基于`promise`实现。
-
- ```js
- async function getUserByAsync(){
- let user = await fetchUser();
- return user;
- }
-
- const user = await getUserByAsync()
- console.log(user)
- ```
18. AST
抽象语法树 (Abstract Syntax Tree),是将代码逐字母解析成 树状对象 的形式。这是语言之间的转换、代码语法检查,代码风格检查,代码格式化,代码高亮,代码错误提示,代码自动补全等等的基础。例如:
- function square(n){
- return n * n
- }
通过解析转化成的AST 如下图:
19. babel编译原理
- babylon 将 ES6/ES7 代码解析成 AST
- babel-traverse 对 AST 进行遍历转译,得到新的 AST
- 新 AST 通过 babel-generator 转换成 ES5
20. 函数柯里化
在一个函数中,首先填充几个参数,然后再返回一个新的函数的技术,称为函数的柯里化。通常可用于在不侵入函数的前提下,为函数 预置通用参数,供多次重复调用。
- const add = function add(x) {
- return function (y) {
- return x + y
- }
- }
-
- const add1 = add(1)
-
- add1(2) === 3
- add1(20) === 21
21. 数组(array)
map : 遍历数组,返回回调返回值组成的新数组
forEach : 无法break ,可以用try/catch 中throw new Error 来停止
filter : 过滤
some : 有一项返回true ,则整体为true
every : 有一项返回false ,则整体为false
join : 通过指定连接符生成字符串
push / pop : 末尾推入和弹出,改变原数组, 返回推入/弹出项
unshift / shift : 头部推入和弹出,改变原数组,返回操作项
sort(fn) / reverse : 排序与反转,改变原数组
concat : 连接数组,不影响原数组, 浅拷贝
slice(start, end) : 返回截断后的新数组,不改变原数组
splice(start, number, value...) : 返回删除元素组成的数组,value 为插入项,改变原数组
indexOf / lastIndexOf(value, fromIndex) : 查找数组项,返回对应的下标
reduce / reduceRight(fn(prev, cur), defaultPrev) : 两两执行,prev 为上次化简函数的return 值,cur 为当前值(从第二项开始)
- 数组乱序:
- var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
- arr.sort(function () {
- return Math.random() - 0.5;
- });
- 数组拆解: flat: [1,[2,3]] --> [1, 2, 3]
- arr.prototype.flat = function() {
- this.toString().split(',').map(item => +item )
- }
浏览器
1. 跨标签页通讯
不同标签页间的通讯,本质原理就是去运用一些可以 共享的中间介质,因此比较常用的有以下方法:
|