add file:变量提升

This commit is contained in:
qianguyihao
2018-03-21 21:45:10 +08:00
parent e3ef193e5d
commit 575b853d31
32 changed files with 930 additions and 37 deletions

View File

@@ -29,6 +29,16 @@ ES6中增加了很多功能上的不足。比如**常量、作用域、对象
ES6 的目标是:让 JS 语言可以编写复杂的大型应用程序,成为企业级开发语言。
### ECMAScript 的各大版本
- ECMAScript 2015年6月ES6
- ECMAScript 2016ES7
- ECMAScript 2017ES8
### ES6 的其他优势

View File

@@ -19,23 +19,29 @@ Promise对象: 代表了未来某个将要发生的事件(通常是一个异步
ES6中的promise对象, 可以**将异步操作以同步的流程表达出来,**很好地解决了**回调地狱**的问题避免了层层嵌套的回调函数。在使用ES5的时候在多层嵌套回调时写完的代码层次过多很难进行维护和二次开发。
### 回调地狱的举例
假设买菜、做饭、洗碗都是异步的。
现在的流程是:买菜成功之后,才能开始做饭。做饭成功后,才能开始洗碗。这里面就涉及到了回调的嵌套。
ES6的Promise是一个构造函数, 用来生成promise实例。
### promise对象的3个状态
- pending: 初始化状态
- 初始化状态等待状态pending
- fullfilled: 成功状态
- 成功状态:fullfilled
- rejected: 失败状态
- 失败状态:rejected
### 使用promise的基本步骤
1创建promise对象
2调用promise的then()
2调用promise的**回调函数**then()
代码格式如下:
@@ -76,11 +82,11 @@ ES6的Promise是一个构造函数, 用来生成promise实例。
- 如果请求失败了请写reject()此时promise的状态会被自动修改为rejected
2promise.then()方法括号里面有两个参数分别代表function1function2
2promise.then()方法,括号里面有两个参数,分别代表两个函数 function1function2
- 如果promise的状态为fullfilled则执行function1里的内容
- 如果promise的状态为fullfilled(意思是:如果请求成功)则执行function1里的内容
- 如果promise的状态为rejected则执行function2里的内容
- 如果promise的状态为rejected(意思是,如果请求失败)则执行function2里的内容
另外resolve()和reject()这两个方法是可以给promise.then()传递参数的。如下:
@@ -164,6 +170,14 @@ ES6的Promise是一个构造函数, 用来生成promise实例。
### 参考链接
- [当面试官问你Promise的时候他究竟想听到什么](https://zhuanlan.zhihu.com/p/29235579)
## Symbol
@@ -275,7 +289,6 @@ Symbol是函数但并不是构造函数。创建一个Symbol数据类型
```javascript
//在括号里加入参数来标识不同的Symbol
let mySymbol1 = Symbol('one');
@@ -304,7 +317,6 @@ Symbol 可以用来定义常量:
### 内置的 Symbol 值
除了定义自己使用的 Symbol 值以外ES6 还提供了 11 个内置的 Symbol 值,指向语言内部使用的方法。
@@ -315,9 +327,40 @@ Symbol 可以用来定义常量:
### async函数
## async函数(异步函数)
### 概述
> async 函数是在 ES2017 引入的。
概念:真正意义上去解决异步回调的问题,同步流程表达异步操作。
本质: Generator 的语法糖。
async比之前的 Promise、Generator要好用一些。
语法:
```javascript
async function foo() {
await 异步操作;
await 异步操作
}
```
我们在普通的函数前面加上 async 关键字,就成了 async 函数。
### async、Promise、Generator的对比async的特点
1、不需要像Generator去调用next方法遇到await等待当前的异步操作完成就往下执行。
2、async返回的总是Promise对象可以用then方法进行下一步操作。
3、async取代Generator函数的星号*await取代Generator的yield。
4、语意上更为明确使用简单经临床验证暂时没有任何副作用。