当前位置: 首页 > news >正文

常用ES标准

ES2015:

1.块级作用域const、let
const声明对象可修改属性,但不能重新赋值对象。

2.解构赋值

const arr = [a1, a2, a3];
const [a1, ...rest] = arr; // rest = [a2, a3];

3.模板字符串``

const date = "星期一";
console.log(`今天是${date};`);

4.函数参数默认值

func(a = 1, ...rest) {}

5.箭头函数

const func = () => {};

6.对象代理proxy

const personProxy = new Proxy(person, {get() {},set() {}
});
// 劫持对象修改其属性

7.Object.assign、Object.is

// 对象合并或赋值
const obj = Object.assign(o1, o2);// 对象判断
NaN === NaN; // false;
Object.is(NaN, NaN); // true;

8.异步解决方案Promise

new Promise((resolve, reject) => {resolve(data);
)).then((data) => {})
.then...

9.类class、extents、super

10.数据结构Set、Map、Symbol

// 不重复集合Set;
// 有序键值对,键不只是字符串,可以是任意值集合Map;
// 唯一值Symbol;
Symbol('symbol') === Symbol('symbol'); // false;
Symbol.for('symbol') === Symbol('symbol'); // true; 全局表

11.for…of遍历

for (const item of set) {}
for (const [item, value] of map) {}

12.模块化module

export { num, numFunc };
import { num as n, numFunc } from './common.js';

13.字符串方法startsWith、endsWith、includes

ES2016

1.数组includes方法

2.指数运算符**

2**3 // Math.pow(2, 3);

ES2017

1.异步async await

async func () => {await getSomeApi();
};

2.对象方法Object.values()、Object.entries
类似于Object.keys()返回对象所有的键、值、键值对数组。

3.字符串方法padStart()、padEnd()

// 补全字符串开头和结尾
padStart(3, '1'); // 001

ES2018

1.异步迭代

for await(const item of items) {}

2.promise.finally

.catch()
.finally(() => {});

3.对象rest

const obj = {a: 1, b: 2, c: 3};
const {a, ...rest} = obj; // rest = {b: 2, c: 3};
const obj2 = {...rest, d: 4};

4.正则命名捕获组和断言

// ?<name>
const reg = /(?<year>/d{4})-(?<month>\d{2})/;
const result = reg.exec('2023-06'); // result.groups = {year: '2023', month: '06'};
// ?= 正向断言
// ?<= 反向断言
'Paul666'.match(/Paul?6+/); // Paul666
'Paul666'.match(/Paul(?=6+)/); // Paul
'Paul666'.match(/(?<=Paul)6+/); // 666

ES2019

1.数组扁平化

const arr = [[1], [2], [[3], [4]];
arr.flat(2); // [1, 2, 3, 4];
arr.flatMap(x => x); // [1, 2, [3], [4]];

2.Object.fromEntries()、Object.entries()

// 对象数组转化
const arr = [['age', '18'], ['name', 'jack']];
const obj = Object.fromEntries(arr); // {age: '18', name: 'jack'};
const arr = Object.entries(obj); // [['age', '18'], ['name', 'jack']];

3.字符串trimStart()、trimEnd()
去除前后的空格

4.Symbol.description

// 方便获取symbol描述
const symbol = Symbol('a');
symbol.description; // a;

5.catch参数可选
// 当我们catch不需要使用绑定参数时

try {} catch {};

ES2020

1.字符串matchAll
匹配所有符合条件的子串,返回匹配情况的数组。

2.import动态导入

// 需要该模块时才会加载,返回一个promise对象。
import('./common.js').then(module => {});

3.Bigint

// 针对js大数精度丢失问题
7897489489448464464n;
Bigint('7897489489448464464');

4.promise.allSettled

promise.all // 所有的promise对象均成功才执行then;
promise.allSettled // 所有的promise对象均有出现结果(成功或失败);
promise.any // 只要有一个promise对象成功,则返回该promise对象;全部失败则返回AggregateError对象;
promise.race // 跑的快的promise对象的结果(成功或失败);

5.统一全局对象globalThis

// 不同环境下的全局this对象
window === globalThis; // 浏览器
global === globalThis; // node.js

6.可选链?
防止类型报错,不存在则返回undefined。

7.空值合并??

0 || 1; // 1 左侧为假返回右值;
0 ?? 1; // 0 左侧为null或undefined,才返回右值;

ES2021

1.字符串replaceAll
全部替换

2.promise.any

3.数字分隔符

const num = 1_000_000_000; // 更清晰;

ES2022

1.正则修饰符/d

/i // 忽略大小写;
/g // 全局;
/m // 多行;
/d // 返回indices表示匹配的下标开始和结束位置索引;

2.Object.hasOwn()
判断对象是否有子鼠星,比hasOwnProperty()(obj=null时会报错)安全;

3.cause自定义错误

throw new Error('failed', {cause: msg});
ES2023

1.HashBang语法

// 指定脚本文件的解释器
// #!/usr/bin/env node
console.log('js');
http://www.lryc.cn/news/324772.html

相关文章:

  • Http中Host,Referer,Origin和Access-Control-Allow-Origin
  • UDP实现聊天室
  • 排序算法:如冒泡排序、插入排序、选择排序、快速排序、归并排序
  • 深度学习pytorch——GPU加速(持续更新)
  • StringRedisTemplate
  • Linux cp、mv命令显示进度条
  • 在Java中使用Apache POI保留Excel样式合并多个工作簿
  • Nomachine远程黑屏通用处理方法
  • 基于51单片机数控直流电压源proteus仿真LCD显示+程序+设计报告+讲解视频
  • [Linux]文件缓冲区
  • ARM:按键中断
  • JavaScript高级(五)--柯西化函数
  • 带3090显卡的Linux服务器上部署SDWebui
  • 37、Linux中Xsync数据同步备份工具
  • 网络基础:构建你的数字世界之桥
  • Python 全栈系列236 rabbit_agent搭建
  • 管理自由,体验简单,使用安全 | 详解威联通全套多用户多权限管理方案【附TS-466C产品介绍】
  • 【Redis】优惠券秒杀
  • 【几何】平面方程
  • macOS访问samba文件夹的正确姿势,在哪里更改“macOS的连接身份“?还真不好找!
  • linux进程切换
  • spring boot 如何升级 Tomcat 版本
  • sentinel中StatisticSlot数据采集的原理
  • 图像去噪与增强技术
  • SpringJPA 做分页条件查询
  • [Java基础揉碎]单例模式
  • unity无法使用道路生成插件Road Architect(ctrl和shift无法标点)
  • Django下载使用、文件介绍
  • Docker进阶:Docker-cpmpose 实现服务弹性伸缩
  • opencv各个模块介绍(2)