ES6新特性let/var/const 箭头函数 解构 promise generator async/await等详解

let 与var const的区别

let不存在变量提升

变量提升(原生js的语法):在最上面定义变量,但是没有赋值

相同的变量名不允许重复声明

块级作用域(ES5内只有全局作用域 函数作用域)

暂时性死区(也叫临时失效区),let声明的变量在当前函数内不允许同名的变量进来

const:声明一个只读的变量,一旦声明,常量的值就不能改变。

const实际上保证的,并不只是表面上的变量的值不得改动,而是变量指向的那个内存不能改动。拓展:有个叫Object.freeze()的方法可以把这个函数冻结


箭头函数(主要需掌握this指向问题)

箭头函数=>定义匿名函数(声明时的this),普通函数指的是调用时候的this

箭头函数this指向父作用域的this

函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

不可以使用arguments对象【arguements是类数组,把所有参数都返回到这个类数组中】,该对象在箭头函数体不存在。如果要用,可以用rest【rest代表剩余的】参数代替。


解构

含义:从数组和对象中提取值,对变量进行赋值的过程称为解构

对象解构:在这里插入图片描述

数组解构在这里插入图片描述


拓展运算符…

作为数组的一部分

数组复制

合并数组

合并对象

类数组转化成数组、解构rest


class关键字 在js继承篇里有提到


promise:

promise是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数(回调地狱)ES6新特性let/var/const 箭头函数 解构 promise generator async/await等详解_第1张图片

ES6新特性let/var/const 箭头函数 解构 promise generator async/await等详解_第2张图片

  • 一个promise可能有三种状态:pengding(进行中)、fulfilled(已成功)、rejected(已失败)
  • 一个promise的状态只可能从“等待”转到“成功”,或者“失败”,不能逆向转换,同时“成功”“失败”不能相互转换。
  • 成功调用resolve(),失败调用reject()
  • resolve进入then,reject进入catch【两种写法】ES6新特性let/var/const 箭头函数 解构 promise generator async/await等详解_第3张图片

promise下两个比较重要的方法

  • Promise.all()都执行完 再执行

  • Promise.race()最快的那个执行完了就执行


genrator

概念:

  • 是ES6提供的解决异步编程的方案之一

  • Generator函数是一个状态机,内部封装了不同状态的数据

  • 用来生成遍历器对象

  • 可暂停性函数(惰性求值)

特点:

  • 写法:function与函数名之间有一个星号

  • 内部用yield表达式来定义不同的状态ES6新特性let/var/const 箭头函数 解构 promise generator async/await等详解_第4张图片

  • generator函数返回的是指针对象,而不会执行函数内部逻辑

  • 调用next方法函数内部逻辑开始执行,遇到yield表达式停止,返回{value:yield后的表达式结果/undefined,done:false/true}

  • 再次调用next方法会从上一次停止时的yield处开始,直到最后

  • yield语句返回结果通常为undefined,当调用next方法时传参内容会作为“启动时”yield语句的返回。


async/await

真正意义上去解决异步回调的问题,同步流程表达异步操作。

本质: generator的语法糖

语法:async function foo(){ await 异步操作;await异步操作;}​​​​

特点:

  • 不需要像Generator去调用next()方法,遇到await等待,当前的异步操作完成就往下执行。

  • 返回的总是Promise对象,可以用then方法进行下一步操作

  • async取代Generator函数的星号*。awiat取代Generator的yield

  • 语意上更为明确,使用简单

你可能感兴趣的:(ES6新特性let/var/const 箭头函数 解构 promise generator async/await等详解)