ES6新增加了哪些新的东西?
ES6是ECMAScript2016的一个简称,也泛指ES5以后的版本,ES6新增的特性有 let const …(扩展运算符) ?.(可选链式操作) ; set map ; Symbol; Promise Generator async ;iterator for of ; class module ; proxy
set map 的区别?
set和map都是Es6新增的数据结构,Set类似于数组,但是成员的值都是唯一的,没有重复的值。Set的属性方法有 size() add() delete() clear();map是键值对的结构的补充,之前键仅限于字符串。而map数据结构则可以是各种类型的值。map的属性方法有 set() get() has() delete() clear();
关于循环结构有哪些循环方法?
普通for循环;for in循环;for of循环(ES6新增) forEach() map() filter some reducer
for(var i=1;i<arr.length;i++){ } //for循环,可以用来循环数组,iterator如set map
for(let i in arr){ console.log(arr[i]) } //for in循环,可以用来循环数组,iterator ,对象
for(let i of arr){ console.log(i) } //for of循环,可以循环iterator如set map
arr.forEach((i)=> cosole.log(i) ) //forEach循环,可以循环数组(会修改原数组)
arr.map((i)=> console.log(i) ) //map循环,可以循环数组,(不会修改原数组,return 新数组)
怎么交换相等长度的两个数组?
通过结构赋值的变量交换可以实现,也可以声明一个额外的变量进行置换
let a=[1],b=[2]; [a,b]=[b,a];
Promise的三个状态是哪几个?
promise是一个用于异步编程的一个解决方案,它的状态有 pending(进行中) fulfilled(已成功) rejected(已失败);它有两个状态变化,一个是从pending到fulfilled,一个是从pending到rejected,一旦状态改变就不会在变
怎么实现多个请求都成功后再处理回调?
Promise.all([]) 传递数组再赋值给一个变量,数组里都是promise实例,在数组里的promise,必须全部成功,状态才会变为fullfilled,只要有一个失败,则就算变为rejected,
Promise.allSettled() 传递数组再赋值给一个变量,数组里都是promise实例,只要数组里的promise都有有返回,等所有异步都确定后会返回一个fullfilled状态的promise对象,且有各promise的状态
怎么实现多个请求,只要成功一个就可以处理回调?
可以通过Promise.rect() 方法实现,和.all()方法类似,都是往里面传递一个promise 实例数组,只要数组里有一个状态发送改变,那最外层的promise 就会接受到这个变化并且回调。
实现的依次分段执行
Generator 是一个异步编程的解决方案,可以用于解决分段执行的方案;在声明函数的时候,在 function* 上添加星号,在函数内部通过 yield 来定义不同的内部状态;再通过next() 方法依次调用,直到 Generator 的 done 状态变为 true
简单介绍一下 Async
Async
可以看做为 Generator
的语法糖; await
后可以跟Promise
或其他异步操作,只有异步操作执行才会继续执行;而且Async
会返回Promise
对象;Promise
对象只有在async
体内的异步操作都完成后才会改变状态,除非return 或者体内抛出异常