首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ES6,ES7,ES8,ES9,ES10,ES11,ES12...JS语法汇总集合

ES6,ES7,ES8,ES9,ES10,ES11,ES12...JS语法汇总集合

作者头像
痴心阿文
发布2022-11-18 17:23:31
发布2022-11-18 17:23:31
4.1K0
举报

ES6,ES7,ES8,ES9,ES10,ES11,ES12...JS语法汇总集合新特性

 ✅作者简介:              我是痴心阿文,你们的学友哥,今天给大家分享 ES6,ES7,ES8,ES9,ES10,ES11,ES12...JS语法汇总集合新特性! 📃个人主页:痴心阿文的博客_CSDN博客-前端,Vue.js,微信小程序领域博主 🔥本文前言: ES6,ES7,ES8,ES9,ES10,ES11,ES12...JS语法汇总集合新特性 💖如果觉得博主的文章有帮到你的话,请👍支持一下博主哦🤞   目录 ES6(2015) 1. 类(class) 2. 模块化(ES Module) 3. 箭头(Arrow)函数 4. 函数参数默认值 5. 模板字符串 6. 解构赋值 7. 延展操作符 8. 对象属性简写 9. Promise 10. let和const ES7(2016) 1. Array.prototype.includes() 2. 指数操作符 ES8(2017) 1. async/await 2. Object.values() 3. Object.entries() 4. String padding 5. 函数参数列表结尾允许逗号 6. Object.getOwnPropertyDescriptors() 7. SharedArrayBuffer对象 8. Atomics对象 ES9(2018) 1. 异步迭代 2. Promise.finally() 3. Rest/Spread 属性 4. 正则表达式命名捕获组 5. 正则表达式反向断言 6. 正则表达式dotAll模式 ES10(2019) 1. Array.flat()和Array.flatMap() 2. String.trimStart()和String.trimEnd() 3. String.prototype.matchAll 4. Symbol.prototype.description 5. Object.fromEntries() 6. 可选 Catch ES11(2020) 1. Nullish coalescing Operator(空值处理) 2. Optional chaining(可选链) 3. Promise.allSettled 4. import() 5. 新基本数据类型BigInt 6. globalThis ES12(2021) 1. replaceAll 2. Promise.any 3. WeakRefs 4. 逻辑运算符和赋值表达式 5. 数字分隔符


ES6(2015)

1. 类(class)

代码语言:javascript
复制
class Man {
  constructor(name) {
    this.name = '学友哥';
  }
  console() {
    console.log(this.name);
  }
}
const man = new Man('学友哥');
man.console(); // 学友哥

2. 模块化(ES Module)

代码语言:javascript
复制
// 模块 A 导出一个方法
export const sub = (a, b) => a + b;
// 模块 B 导入使用
import { sub } from './A';
console.log(sub(1, 2)); // 3

3. 箭头(Arrow)函数

代码语言:javascript
复制
const func = (a, b) => a + b;
func(1, 2); // 3

4. 函数参数默认值

代码语言:javascript
复制
function foo(age = 25,){ // ...}

5. 模板字符串

代码语言:javascript
复制
const name = '学友哥';
const str = `Your name is ${name}`;

6. 解构赋值

代码语言:javascript
复制
let a = 1, b= 2;
[a, b] = [b, a]; // a 2  b 1

7. 延展操作符

代码语言:javascript
复制
let a = [...'hello world']; // ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]

8. 对象属性简写

代码语言:javascript
复制
//对象属性简写

const name='学友哥',
const obj = { name };

9. Promise

代码语言:javascript
复制
Promise.resolve().then(() => { console.log(2); });
console.log(1);
// 先打印 1 ,再打印 2

10. let和const

代码语言:javascript
复制
 //let和const

let name = '学友哥';
const arr = [];

//概念区别
let与const都是只在声明所在的块级作用域内有效。

let声明的变量可以改变,值和类型都可以改变,没有限制。

const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值

ES7(2016)

1. Array.prototype.includes()

代码语言:javascript
复制
[1].includes(1); // true

2. 指数操作符

代码语言:javascript
复制
2**10; // 1024

ES8(2017)

1. async/await

异步终极解决方案

代码语言:javascript
复制
async getData(){
    const res = await api.getTableData(); // await 异步任务
    // do something    
}

2. Object.values()

代码语言:javascript
复制
Object.values({a: 1, b: 2, c: 3}); // [1, 2, 3]

3. Object.entries()

代码语言:javascript
复制
Object.entries({a: 1, b: 2, c: 3}); // [["a", 1], ["b", 2], ["c", 3]]

4. String padding

代码语言:javascript
复制
// padStart
'hello'.padStart(10); // "     hello"
// padEnd
'hello'.padEnd(10) "hello     "

5. 函数参数列表结尾允许逗号

6. Object.getOwnPropertyDescriptors()

代码语言:javascript
复制
获取一个对象的所有自身属性的描述符,如果没有任何自身属性,则返回空对象。

7. SharedArrayBuffer对象

代码语言:javascript
复制
SharedArrayBuffer 对象用来表示一个通用的,固定长度的原始二进制数据缓冲区,


/**
 * 
 * @param {*} length 所创建的数组缓冲区的大小,以字节(byte)为单位。
 * @returns {SharedArrayBuffer} 一个大小指定的新 SharedArrayBuffer 对象。其内容被初始化为 0。
 */
new SharedArrayBuffer(10)

8. Atomics对象

代码语言:javascript
复制
Atomics 对象提供了一组静态方法用来对 SharedArrayBuffer 对象进行原子操作。

ES9(2018)

1. 异步迭代

代码语言:javascript
复制
await可以和for...of循环一起使用,以串行的方式运行异步操作

async function process(array) {
  for await (let i of array) {
    // doSomething(i);
  }
}

2. Promise.finally()

代码语言:javascript
复制
Promise.resolve().then().catch(e => e).finally();

3. Rest/Spread 属性

代码语言:javascript
复制
const values = [1, 2, 3, 5, 6];
console.log( Math.max(...values) ); // 6

4. 正则表达式命名捕获组

代码语言:javascript
复制
const reg = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/;
const match = reg.exec('2021-02-23');

5. 正则表达式反向断言

代码语言:javascript
复制
(?=p)、(?<=p)  p 前面(位置)、p 后面(位置)
(?!p)、(?<!p>) 除了 p 前面(位置)、除了 p 后面(位置)
代码语言:javascript
复制
(?<=w)
代码语言:javascript
复制
(?<!w)

6. 正则表达式dotAll模式

正则表达式中点.匹配除回车外的任何单字符,标记s改变这种行为,允许行终止符的出现

代码语言:javascript
复制
/hello.world/.test('hello\nworld'); // false

ES10(2019)

1. Array.flat()和Array.flatMap()

flat()

代码语言:javascript
复制
[1, 2, [3, 4]].flat(Infinity); // [1, 2, 3, 4]

flatMap()

代码语言:javascript
复制
[1, 2, 3, 4].flatMap(a => [a**2]); // [1, 4, 9, 16]

2. String.trimStart()和String.trimEnd()

代码语言:javascript
复制
去除字符串首尾空白字符

3. String.prototype.matchAll

代码语言:javascript
复制
matchAll()为所有匹配的匹配对象返回一个迭代器


const raw_arr = 'test1  test2  test3'.matchAll((/t(e)(st(\d?))/g));
const arr = [...raw_arr];

4. Symbol.prototype.description

代码语言:javascript
复制
只读属性,回 Symbol 对象的可选描述的字符串。
代码语言:javascript
复制
Symbol('description').description; // 'description'

5. Object.fromEntries()

代码语言:javascript
复制
返回一个给定对象自身可枚举属性的键值对数组
代码语言:javascript
复制
// 通过 Object.fromEntries, 可以将 Map 转化为 Object:
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
console.log(Object.fromEntries(map)); // { foo: "bar", baz: 42 }

6. 可选 Catch

ES11(2020)

1. Nullish coalescing Operator(空值处理)

代码语言:javascript
复制
表达式在 ?? 的左侧 运算符求值为undefined或null,返回其右侧。
代码语言:javascript
复制
let user = {
    u1: 0,
    u2: false,
    u3: null,
    u4: undefined
    u5: '',
}
let u2 = user.u2 ?? '用户2'  // false
let u3 = user.u3 ?? '用户3'  // 用户3
let u4 = user.u4 ?? '用户4'  // 用户4
let u5 = user.u5 ?? '用户5'  // ''

2. Optional chaining(可选链)

代码语言:javascript
复制
?.用户检测不确定的中间节点
代码语言:javascript
复制
let user = {}
let u1 = user.childer.name // TypeError: Cannot read property 'name' of undefined
let u1 = user.childer?.name // undefined

3. Promise.allSettled

代码语言:javascript
复制
返回一个在所有给定的promise已被决议或被拒绝后决议的promise,并带有一个对象数组,每个对象表示对应的promise结果
代码语言:javascript
复制
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => reject('我是失败的Promise_1'));
const promise4 = new Promise((resolve, reject) => reject('我是失败的Promise_2'));
const promiseList = [promise1,promise2,promise3, promise4]
Promise.allSettled(promiseList)
.then(values=>{
  console.log(values)
});

4. import()

代码语言:javascript
复制
按需导入

5. 新基本数据类型BigInt

代码语言:javascript
复制
任意精度的整数

6. globalThis

代码语言:javascript
复制
浏览器:window
worker:self
node:global

ES12(2021)

1. replaceAll

代码语言:javascript
复制
返回一个全新的字符串,所有符合匹配规则的字符都将被替换掉
代码语言:javascript
复制
const str = 'hello world';
str.replaceAll('l', ''); // "heo word"

2. Promise.any

代码语言:javascript
复制
Promise.any() 接收一个Promise可迭代对象,只要其中的一个 promise 成功,就返回那个已经成功的 promise 。如果可迭代对象中没有一个 promise 成功(即所有的 promises 都失败/拒绝),就返回一个失败的 promise
代码语言:javascript
复制
const promise1 = new Promise((resolve, reject) => reject('我是失败的Promise_1'));
const promise2 = new Promise((resolve, reject) => reject('我是失败的Promise_2'));
const promiseList = [promise1, promise2];
Promise.any(promiseList)
.then(values=>{
  console.log(values);
})
.catch(e=>{
  console.log(e);
});

3. WeakRefs

代码语言:javascript
复制
使用WeakRefs的Class类创建对对象的弱引用(对对象的弱引用是指当该对象应该被GC回收时不会阻止GC的回收行为)

4. 逻辑运算符和赋值表达式

代码语言:javascript
复制
逻辑运算符和赋值表达式,新特性结合了逻辑运算符(&&,||,??)和赋值表达式而JavaScript已存在的 复合赋值运算符有:
代码语言:javascript
复制
a ||= b
//等价于
a = a || (a = b)

a &&= b
//等价于
a = a && (a = b)

a ??= b
//等价于
a = a ?? (a = b)

5. 数字分隔符

代码语言:javascript
复制
数字分隔符,可以在数字之间创建可视化分隔符,通过_下划线来分割数字,使数字更具可读性
代码语言:javascript
复制
const money = 1_000_000_000;
//等价于
const money = 1000000000;

1_000_000_000 === 1000000000; // true

🍓结束语🏆

       🍉 学无止境,汇总还未结束,后续新出会陆续补充...

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 类(class)
  • 2. 模块化(ES Module)
  • 3. 箭头(Arrow)函数
  • 4. 函数参数默认值
  • 5. 模板字符串
  • 6. 解构赋值
  • 7. 延展操作符
  • 8. 对象属性简写
  • 9. Promise
  • 10. let和const
  • 1. Array.prototype.includes()
  • 2. 指数操作符
  • 1. async/await
  • 2. Object.values()
  • 3. Object.entries()
  • 4. String padding
  • 5. 函数参数列表结尾允许逗号
  • 6. Object.getOwnPropertyDescriptors()
  • 7. SharedArrayBuffer对象
  • 8. Atomics对象
  • 1. 异步迭代
  • 2. Promise.finally()
  • 3. Rest/Spread 属性
  • 4. 正则表达式命名捕获组
  • 5. 正则表达式反向断言
  • 6. 正则表达式dotAll模式
  • 1. Array.flat()和Array.flatMap()
  • 2. String.trimStart()和String.trimEnd()
  • 3. String.prototype.matchAll
  • 4. Symbol.prototype.description
  • 5. Object.fromEntries()
  • 6. 可选 Catch
  • 1. Nullish coalescing Operator(空值处理)
  • 2. Optional chaining(可选链)
  • 3. Promise.allSettled
  • 4. import()
  • 5. 新基本数据类型BigInt
  • 6. globalThis
  • 1. replaceAll
  • 2. Promise.any
  • 3. WeakRefs
  • 4. 逻辑运算符和赋值表达式
  • 5. 数字分隔符
  • 🍓结束语🏆
相关产品与服务
云开发 CloudBase
AI-Native 的全栈应用开发平台,为 AI 驱动的开发流程和终端应用而设计。提供应用开发所需的完整 Serverless 资源,包括身份认证、数据库、云函数与容器、文件存储、Web 应用托管等能力;支持小程序/小游戏、AI Agent 应用、Web 应用等场景;提供 Skills/MCP 工具适配主流 AI 编程工具,避免了开发过程中繁琐的服务端搭建及运维,开发者可以专注于业务逻辑的实现,开发效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档