ECMAScript6

新特性 核心知识点
let变量声明 1.变量不能重复声明;2. 引入块级作用域;
3. 不再存在变量提升;4.不影响作用域链
const定义常量 1.一定要赋初始值;2.一般常量使用大写或驼峰命名法;
3. 常量的值不能修改;4.也是块级作用域;
5. 对于数组和对象元素的修改,因为指向的堆内存地址值不变,所以不算对常量的修改,不报错
解构赋值 1. 针对数组和对象;2. 数组的解构是按索引/顺序进行赋值;
3. 对象的解构是寻找同名属性进行赋值,如果没有同名属性则被赋值为undefined
模板字符串 `` 1.内容中可以直接出现换行符;2.内容中可以进行变量拼接(利用$())
箭头函数 => 1. 箭头函数不能作为构造函数实例化,不能使用arguments变量;
2. 当形参只有一个时可以省略小括号;当代码体只有一条语句时可以省略大括号且必须省略return;
3. 箭头函数适合与this无关的回调,如定时器,数组方法回调等;不适合与this有关的回调,如事件回调,对象的方法(因this为静态,始终指向函数声明时所在作用域this的值)
rest参数 …args 用于获取参数的实参,代替arguments
扩展运算符 […] 1. 将[数组]转换为逗号分隔的[参数序列];
2.数组的合并,数组的克隆,伪数组转换为真正的数组
新数据类型Symbol 1. JS的第七种数据类型,类似于字符串的数据类型;
2.let s=Symbol(‘sgg’); 表示独一无二的值,用来解决命名冲突的问题,不能与其他数据进行运算/比较,定义的对象属性不能使用for…in循环遍历但是可以使用Reflect.ownkey键名;
3. 有11+个属性/方法,用于扩展对象功能
新数据类型Set 1. JS的第八种数据类型,类似于数组的数据类型,但成员的值都是唯一的;
2.集合实现了iterator接口,所以可以使用扩展运算符和[for…of…]遍历;
3.集合的属性和方法有size/add/delete/has;
4. 可以用于数组的自动去重,交集,并集等场景,如let result=[…new Set(arr)]
新数据类型Map 1. JS的第九种数据类型,类似于对象的数据类型,也是键值对的集合,但“键”的范围不限于字符串,各种类型的值(包括对象)都可以;
2.集合实现了iterator接口,所以可以使用扩展运算符和[for…of…]遍历,遍历的结果为数组,每个数组内包含键与值;
3.let m=new Map();Map的属性和方法有size/add/get/has/clear
设置函数默认初始值 允许给函数参数赋值初始值,一般位置靠后(潜规则);可与解构赋值结合
对象的简化 允许大括号里,直接写入变量和函数,作为对象的属性和方法
迭代器 迭代器是一种接口,为各种不同的数据结构提供统一的访问机制;任何数据结构只要部署iterator接口,就可以完成遍历操作;
ES6创造了一种新的遍历命令for…of循环,iterator接口主要供for…of消费;
原生具备iterator接口的数据:Array Arguments Set Map String
生成器 1. 生成器其实就是一个特殊的函数,用于解决异步编程;
2. yield用于分隔,next方法可以传入实参,实参是作为第n-1个yield语句返回的结果
Promise 1. Promise是ES6引入的异步编程的新解决防范,语法上是一个构造函数。用来封装异步操作并可以获取其成功或失败的结果;2. Promisr.prototype.then方法
class类 引入了class(类)的概念,作为对象的模块;同时可以定义类;构造函数的继承和原型链的继承方式也发生了更改
数值扩展 Number.EPSILON,Number.isNaN,Number.isFinite等;
对象方法的扩展 1. Object.is判断两个值是否完全相等(NaN也可以判断);
2. Object.assign对象的合并;
3. Object.setPrototypeOf设置原型对象;Object.getPrototypeOf获取原型对象
模块块 ES6模块化规范;export与import(参考JS模块化规范)
babel对ES6模块化代码的转换 **
引入npm包 import $ from “jquery”; **

ECMAScript7

新特性 核心知识点
Array.prototype.includes includes方法用来检测数组中是否包含某个元素,返回布尔类型值;ES5的indexof返回的是数字[索引],且不存在时返回-1
指数操作符 ES7引入指数运算符[**],用来实现幂运算,功能与Math.pow结果相同

ECMAScript8

新特性 核心知识点
asynch和await 可以异步代码像同步代码一样;
async函数: 返回值是promise对象,promise对象的结果由async函数执行的返回值决定;
await函数:必须写在async函数中,右侧的表达式一般为promise对象,返回的是promise成功的值,如果promise失败了会抛出异常(通过try…catch捕获)
对象方法的扩展 Object.keys()获取对象所有的键;
Object.values()获取对象所有的值;
Object.entries() 对象转换为数组,数组内容是键值;
Object.getOwnPropertyDescriptors()返回对象属性的描述对象

ECMAScript9

新特性 核心知识点
rest参数和扩展运算符 ES6中已经引入,但只针对于数组,在ES9中为对象提供了像数组一样的rest参数和扩展运算符
正则扩展 命名捕获分组;反向断言;dotAll模式;

ECMAScript10

新特性 核心知识点
对象方法的扩展 Object.fromEntries 将二维数组转换为对象;是ES8中Object.entries()的逆运算
字符串方法的扩展 trimStart清除字符串左侧空白;trimEnd清除字符串右侧空白
数组方法的扩展 flat/flatMao:将多维度数组转换为低纬数组;
Symbol.prototype.description 获取symbol的描述

ECMAScript11

新特性 核心知识点
私有属性 前面加#表示私有属性,实例化后无法被读取到,只能通过私有调用
Promise.allSettled方法 用于批量异步任务的场景
字符串方法的扩展 string.prototype.matchAll方法
可选链操作符 ?.:不需要层级判断;前面的有结果就返回前面的,没有结果返回后面的,找不到返回undefined
动态import import结果返回的值是一个promise对象,成功的值就是promise暴露出的方法
绝对全局对象globalThis 主要用于某些环境下,直接忽略其他,对全局对象做操作
新数据类型 BigInt JS的第十种数据类型;
表示大整型,主要用于大数值运算