Alvin Liu

  • Home
  • About
  • Privacy Policy
  1. Main page
  2. Frontend
  3. Main content

ES6 - ES13 新特性列表

2023-02-26 2545hotness 0likes 1comments

ES 6 (2015)

  1. let, const
  2. 解构赋值 . ({name, age, gender}) => {}
  3. 模板字符串 `${var} yes`
  4. 箭头函数 () => {}, n => n > 1;
  5. 函数参数默认值 (a = 10, b) => {}
  6. 扩展运算符 [...array1, 'a', 'b']
  7. 集合参数, (a, b, ...others) => {};
  8. 属性简写, 同名自动赋值
  9. 对象合并, Object.assign(to, from), 类似BeanUtil
  10. 符号变量Symbol
  11. Set和Map
  12. 迭代器, for(let v of array)
  13. Promise, new Promise(resolve, reject) { resolve(data); reject(error) }.then((data)=>{}, (err) => {});
  14. 类class, class Person{ constructor(name, age) {}, talk() {}}.
  15. 类的继承, Man extends Person{ constructor(name, age, weapon){super(name, age); this.weapon = weapon}; fight(){}; talk(){};}
  16. 模块Module, 三种export, export function(){}, export { funcA, funcB}, export default CLASS;
  17. 模块Module, 三种import, import * as obj1 from 'a.js'; import {funcA as funA} from ''; import obj from 'export default obj';
  18. 生成器函数Generator, 用 function* 定义, 返回的函数不能直接调用. 要调用.next()方法获取返回值.
  19. yield异步生成器, 在生成器内使用, 把被修饰的调用变成异步的.

ES 7 (2016)

  1. 检查数组是否包含给定值. Array.prototype.includes()
  2. 求幂运算符, 4 ** 2 = 16

ES 8 (2017)

  1. 异步函数async/await, async function(){ return await //a promise;} async 把函数转化为异步返回Promise, 在里面就可以用await同步获取Promise的值了. 但最外层一定要有async包装为Promise, 这样整体上还是异步的.
  2. Object函数扩展, Object.keys(obj), Object.values(obj), Object.entries() = [["key1", "v1", "key2", v2]]
  3. 字符串填充, '7'.padStart(3, '0'); // '007'; 'yes'.padEnd(6, '!'); // 'yes!!!'

ES 9 (2018)

  1. 解构对象属性, {...obj, "name":"test"}
  2. 异步迭代, for-await-of
  3. 正则扩展

ES 10 (2019)

  1. 展平数组 [1,2,[3,4]].flat() = [1,2,3,4]; [1,2,[3,4,[5,6]]].flat(2) = 展平两层嵌套
  2. 展平map返回的数组, [1,2,3,4].flatMap(n=>[n, 1]) = [1,1,2,1,3,1,4,1];
  3. 对象构造器, 数组/Map, Object.fromEntries([["name", "test"], ["age", 100]]) = {"name": "test, "age": 100}; Object.fromEntries(new Map())

ES 11 (2020)

  1. 空值运算符, obj?.name?.length
  2. 类私有属性, class Person { name, #age, #money, hijack() { console.log(money) }}; 私有属性只能在类内部访问
  3. Promise并发调用, Promise.allSettled(promise1, promise2)返回全部结果, Promise.all(a,b)任意失败返回失败, Promise.race(a,b), 返回最早结果无论成功失败.
  4. 动态import, function() { import('test.js').then((module)=>{module.func1();})}. 代码内动态加载外部js, 异步加载到js后返回module对象, 内含js export的方法.

ES 12 (2021)

  1. Promise.any(), 并发调用多个Promise并返回第一个成功的调用.
  2. String.prototype.replaceAll()

ES 13 (2022)

  1. 静态私有属性/方法, class P{ static #URL}
  2. Object.hasOwn(object, property)
  3. 提取函数at(), [1,2,3].at(-1) = 3. "apple".at(-2) = "l"

相关文章

  • TypeScript学习笔记

This article is licensed with Creative Commons Attribution-NonCommercial-No Derivatives 4.0 International License
Tag: Nothing
Last updated:2023-02-26

Alvin Liu

Software Developer in Toronto

Like
Next article >

Comments

  • kjstart

    Thanks!

    2023-02-26
    Reply
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    Leave a Reply to kjstart Cancel

    COPYRIGHT © 2024 Alvin Liu. alvingoodliu@[email protected] ALL RIGHTS RESERVED.

    Theme Made By Seaton Jiang