ES6文档:https://es6.ruanyifeng.com/#docs/set-mapES6(2015年发布)------------版本变化顶多是增加了很多语法特性;兼容性:label可以将ES6编译成ES5。ES6中声明变量的六种方式:ES5只有两种声明变量的方式:var命令和function命令。除了在ES6中加入let和const命令外,后面的章节还会提到另外两种声明变量的方法:import命令和class命令。所以,ES6一共有6种声明变量的方式。letvariabledeclarationconstdeclaresconstant,valuecannotbemodifiedDestructuringassignment:Destructuringassignment:ES6允许按照一定的模式从数组和对象中提取值,并为变量赋值。简化对象写箭头函数(=>)和声明箭头函数有几个使用点。函数体中的this对象是定义所在的对象,而不是使用所在的对象。不能作为构造函数,没有prototype原型对象,不能使用new命令,否则会抛出错误。没有参数对象,它不存在于函数体内。如果要使用它,可以使用rest参数代替。不能使用yield命令,因此箭头函数不能用作Generator函数。箭头函数都是匿名函数。箭头函数可以通过三种方式进行简化。适合与this无关的回调,如:定时器数组的方法回调箭头函数不适合与this相关的回调,如:事件回调,对象方法允许给函数赋默认值parametersrestparameterexpansionoperatorexpansionoperatorexpansionoperation运算符将一个“数组”转换成一个逗号分隔的“参数序列”;传播运算符(传播)是三个点(...)。就像rest参数的逆运算一样,将一个数组转化为以逗号分隔的参数序列。扩展运算符的应用数组的合并:[...数组1,...数组2]数组的克隆:[...数组]将伪数组转换为真正的数组:新数据类型SymbolES6引入了一种新的数据类型Symbol用来标识一个唯一的值,是一种类似于字符串的数据类型。Symbol的特点:Symbol的值是唯一的,用来解决命名冲突的问题。符号值不能与其他数据一起操作。Symbol定义的对象属性不能被for...in循环遍历,但是可以使用Reflect.ownKeys来获取对象。所有键名。在for...in迭代中不可枚举,object.getOwnPropertyNames()不会返回符号对象的属性,可以通过object.getOwnPropertySymbols()获取。Symbol创建一个内置属性数组,这些属性使用Symbol向对象添加属性或方法。Stringtemplate``(backticks)面向对象类类区别:类中没有变量,this提升为指向ES6面向对象:1.添加class关键字,构造函数与类分离2.在类Inheritanceextends中直接添加方法类class,supersuper:superclass==parentclass面向对象-实例模块化,组件化JSX==babel==browser.jsJSONJSONobjectJSON.stringify():jsontostringJSON.parse():stringtoShorthandforjsonjson,当方法的简写名与value(key和value)相同时,可以保留一个value。对象的缩写promisehttps://mp.weixin.qq.com/s?__...特点:promise的状态一旦改变,就不能再改变,也不允许返回。promise.allsuccess方法只在全部成功时调用,failure方法在一个失败时调用。失败时promise.allSettled包装一个实例数组,记录所有状态返回。最后所有状态都会去实现重试https://blog.csdn.net/qq_40420294/article/details/101920789异步:操作之间没有关系,可以同时进行多个操作缺点是代码比较复杂同步:操作同时直接相关只能做一件事代码更简单Ajax请求异步优点:Promise是一种异步编程的解决方案,比传统的异步方案【回调函数】和【事件】更加合理和强大。Promise消除了异步操作,采用与同步相同的方式进行异步写入。然后可以链式调用,解决回调地狱和异步问题。new的缺点是:调用不方便,一旦执行就不能停止,改变后状态不能改变。错误信息定位不好Promise.then()基本用法:Promise.all():解析多个请求成功后才调用成功的方法,一个失败则调用失败的方法。Promise.race():解析多个requestrace,所有实例中第一个返回的状态都是success。generator生成器是一个普通的函数,有两个特点:函数和函数名之间有*,内部使用yield表达式。生成器函数和普通函数的区别:生成器函数可以中途停止yield:暂时放弃执行next()代理拦截,代理(vue3原理)数组的关键是自己的重载(overload):使用自己的定义覆盖语言原始定义要代理的目标对象,配置对象Proxy实例的方法:get():目标对象拦截器代理本身设置目标对象属性名属性值实例本身应用目标对象targetobjectcontext数组有targetobject属性名construstinterceptconstructoriterationIterator:自定义遍历数据部署Iterator接口即可遍历任何数据,主要用于for...of消费。SetWeakSetWeakSet中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,即如果其他对象不再引用该对象,垃圾回收机制会自动回收其占用的内存物体。不管该对象是否还存在于WeakSet中。MapES6提供了一个Map数据结构,类似于一个对象,一个键值对的集合。但“键”的范围不限于字符串,各种类型的值(包括对象)都可以作为键。Map也实现了iterator接口,所以可以使用[展开运算符]和[for...of...]来遍历它。Map属性和方法:size返回Map集合中的元素个数添加新元素,返回当前Mapget返回键名对象的键值has检测Map中是否包含元素,返回布尔值clear清除集合,返回undefinedES7(2017年发布2016)------------ES8(2017年发布)------------asyncawaithttps://www.zhihu。com/question/39571954概念:异步函数是生成器函数的语法糖。async函数就是把生成器函数的*换成async,把yield换成await。异步编程的终极解决方案。await后面的是同步任务,await下面的是microtask,.then是microtask函数执行的时候,遇到await就返回。等到触发的异步操作完成(并且调用栈清空),然后在函数体中执行下面的语句。async/await是基于Promise实现的,async函数的返回值就是promise对象。promise对象的结果由异步函数执行的返回值决定。优点:async和await的结合可以让异步代码像同步代码一样解析链式调用,不需要像Promise一样常量.then,不需要写匿名函数来处理Promise的resolve值,也不需要定义冗余数据变量,也避免了嵌套代码。缺点:可能会导致性能问题,因为await会阻塞代码。asyncawait和promis的区别:相同点:都是优化异步编程体验的解决方案;区别:promise是应用层的解决方案,有规范,不同的语言也可以实现,它只能异步处理错误,在js中本质上是一个对象async/await是语言层的解决方案,让用户就像编写同步代码一样,通过try/catch同步处理错误。promise解决回调地狱问题,async/await返回一个promise对象,解决不停.theninpromiseES9(2018年发布)------------ES10(2019年发布))------------ES11(2020年发布)------------
