常用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');

相关推荐

  1. ES标准

    2024-03-25 16:38:01       18 阅读
  2. es查询编辑

    2024-03-25 16:38:01       31 阅读
  3. ES6 语法

    2024-03-25 16:38:01       13 阅读
  4. ES查询方式

    2024-03-25 16:38:01       12 阅读
  5. HTML标签

    2024-03-25 16:38:01       35 阅读
  6. HTML:标签

    2024-03-25 16:38:01       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-25 16:38:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-25 16:38:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-25 16:38:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-25 16:38:01       18 阅读

热门阅读

  1. [leetcode] 26. 删除有序数组中的重复项

    2024-03-25 16:38:01       17 阅读
  2. String、StringBuilder、StringBuffer

    2024-03-25 16:38:01       15 阅读
  3. 【C语言】指针基础

    2024-03-25 16:38:01       18 阅读
  4. npm 常用命令详解

    2024-03-25 16:38:01       14 阅读
  5. 常用设计模式

    2024-03-25 16:38:01       17 阅读
  6. HTTP跨域

    2024-03-25 16:38:01       21 阅读
  7. Python问题异常处理与日志结合

    2024-03-25 16:38:01       17 阅读
  8. Python | 八、类型注解

    2024-03-25 16:38:01       15 阅读
  9. 链表去重介绍

    2024-03-25 16:38:01       15 阅读