一、es6相关

  1. 有let、const、变量的结构赋值、模板字符串``
  2. 对象的简化写法:
let name = 'aaa';
let change = function() {
    console.log('jjj');}
const school = {name. change}
  • 1.
  • 2.
  • 3.
  • 4.
  1. 箭头函数以及声明特点,特点有以下
  • this是静态的,this始终指向函数声明时所在作用域下this的值,call和apply也不能改变this的指向
  • 箭头函数不能作为构造实例化对象
  • 不能使用arguments变量

   4. rest参数、扩展运算符(...)、Symbol(第7种数据类型,表独一无二的值、不能用for in循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有健名,可以用symbol.for来创建、不能与其他数据进行运算、另外还有很多内置属性)、所有数据类型(USONB)

   5.迭代器generator是一种接口,里面有symbol.iterator

   6.* 生成器(生成器是一种特殊的函数)用iterator.next()才能继续往下走,可以结合yield使用

   7.promise、set以及一系列方法等(has、delete、size等)、map、class(以及getter和setter)、各种数值扩展

   8.Number.EPSTION是js表示的最小精度,EPSTION属性的值接近于2.220446049....,二进制和八进制,Number.isFinite检测一个数值是否为有限数,Number.isNaN检测一个数值是否是NaN,Number.parseInt、Number.parseFloat字符串转为整数,Number.isInteger判断一个数是否为整数,Math.trunc将数字的小数部分抹掉,Math.sign判断一个数到底为正数、负数、零。

  9.对象的扩展:Object.is判断两个值是否完全相等,Object.assgin对象的合并,Object.setPrototypeOf和Object.getPrototypeOf,

  10.模块化规范产品;commonjs=》nodejs,browserify,AMD=》requirejs,CMD=》seaJs

  11.es6模块暴露数据语法汇总

// 分别暴露
export const s = 'aaa';
export function test() {}

// 统一暴露
const s = 'aaa';
function job() {
    console.log(000);
}
export {s, job}

// 默认暴露
export default {
   s: 'aaa',
   change: function() {}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

12.es6引入模块数据语法汇总

// 通用的导入方式
import * as m1 from './module'

// 解构赋值形式(重名了需要加别名用as)
import {s, change} from './module'
// 默认暴露
import {default as m} from './module'

// 简便形式
import m1 from './module'
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

二、ES7新特性

  1. Array.prototype.includes,用来检测数组中是否包含某个元素,返回布尔类型值
  2. 指数操作符**,用来实现幂运算,功能和Math.pow相同

三、ES8新特性

  1. async和await

四、ES9新特性

  1. 扩展运算符...和rest参数,在es6中已经引入了,不过es6只针对数组
  2. 正则扩展-命名捕获分组
const str = '<a href="http://www.atguigu.com">ppp</a>'
// 提取url与标签文本
const reg = /<a href="(.*)">(.*)<\/a>/;
console.log(reg.exec(str));
  • 1.
  • 2.
  • 3.
  • 4.
  1. 正则扩展-反向断言
    const str = 'KSJBLKGJB1314你知道么555啦啦啦' // 提取url与标签文本 // const reg = /\d+(?=啦)/; const reg = /(?<=么)\d+/; // 反向断言:根据前面的内容来判断; console.log(reg.exec(str));
  2. 正则扩展-dotAll模式   .  元字符  除换行符之外的任意字符

五、ES10新特性

  1. Object.fromEntries,创建一个map对象不过是一个二维数组形式
  2. trimStart和trimEnd
  3. flat和flatMap数组方法,数组铺平方法
  4. Symbol.prototype.description

六、ES11新特性

  1. 私有属性
  2. Promise.allSettled,返回每个promise的执行结果,跟promose.all方法有区别,all方法都成功了才成功,
  3. String.prototype.matchAll正则批量匹配的方法,可以用for of循环来遍历批量匹配结果;
  4. 可选链操作符?.
if (obj && obj.name && obj.name.name) {}
可以换成
if (obj?.name?.name) {}
  • 1.
  • 2.
  • 3.

5.动态import

btn.onclick = () => {
  import('./hello.js').then(module => {
      console.log(module);
  })
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

6.双问号??

// 双问号 ?? 的操作符跟 || 类似,如果给定变量值为 null 或者 undefined
// 则使用双问号后的默认值,否则使用该变量值。

> undefined ?? 'default'
'default'
> null ?? 'default'
'default'
> false ?? 'default'
false
> '' ?? 'default'
''
> 0 ?? 'default'
0
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

7.BigInt类型

8.绝对全局对象globalThis;