ES6~ES11(持续更新)

91 阅读2分钟

ES6~ES11

let变量声明

1.  变量不能重复声明

2.  存在块级作用域({})

3.  不存在变量提升

4.  不影响作用域链

const常量

1.  一定要赋初始值

2.  命名时一般使用大写

3.  值不能修改

4.  块级作用域,不存在变量提升

5.  对于数组和对象的修改不算对常量的修改,只有当数组或对象的内存地址发生改变时才会报错

解构赋值

1.  允许按照一定的模式从数组或对象中提取值,对变量进行赋值

模板字符串

1.  内容中可以可以出现html、换行符等等内容

2.  变量拼接:在模板字符串中使用变量${}

对象简写

1.  允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。

ES6的箭头函数及特点

1.  允许使用箭头函数定义函数

2.  this始终指向函数声明时所在作用域的this的值

3.  不能作为构造实例化对象

4.  不能使用arguments对象

Promise

1.  promise.then返回的新promise的结果状态是由什么决定的?

是由then中指定的回调函数的执行结果决定的
如果执行错误或者抛出异常,新的promise的状态就会变成rejected,reason为返回的值
如果执行结果返回非promise对象的任何值,新的promise的状态会变成resolved,value为返回的值
如果执行结果返回一个新的promise,此promise的执行结果会成为新的promise
的结果
promise的状态改变,就会将then放入微队列中

2.  promise如何串联多个操作任务?

promise的then返回一个新的promise,可以开成then的链式调用
通过then的链式调用串联成多个同步/异步任务

async和await

async函数的返回值是promise函数,promise对象的结果 由async的函数执行的结果决定
await右侧的表达式如果对象是promise对象,await返回的是promise成功的值
注意:await必须写在async函数中,但是async函数中可以没有await,如果await的promise抛出异常,需要通过trycatch来捕获异常

宏队列和微队列

宏任务:宿主(浏览器)发起的任务,如:定时器回调、dom事件回调、ajax回调
微任务:js引擎发起的任务,如:promise.then,promess.nextTick
js引擎首先必须先执行所有的初始化同步任务代码
每次去执行宏队列之前,都会确认微队列中是否有任务需要执行,有则优先执行微队列。否则就去执行宏队列