首页 > 其他分享 >ES 新特性全解密!这 25 个特性让你的代码效率飙升 50%

ES 新特性全解密!这 25 个特性让你的代码效率飙升 50%

时间:2025-01-07 11:11:39浏览次数:1  
标签:25 const name 50% 特性 api Promise console fetch

分享 25 个能显著提升编程效率的 ES 新特性,让我们的代码更简洁、更优雅、更高效。

1. 可选链操作符(Optional Chaining)

告别繁琐的空值检查,用简单的 ?. 优雅处理对象属性访问。

// 之前的写法
const street = user && user.address && user.address.street;

// 现在的写法
const street = user?.address?.street;

2. 空值合并运算符(Nullish Coalescing)

使用 ?? 来处理 null 或 undefined 的默认值设置。

const value = null;
const defaultValue = value ?? 'default';  // 'default'

3. 私有类字段(Private Class Fields)

使用 # 声明私有字段,增强面向对象编程的封装性。

class Person {
  #name;
  constructor(name) {
    this.#name = name;
  }
  
  getName() {
    return this.#name;
  }
}

4. 动态导入(Dynamic Import)

按需加载模块,优化应用性能。

button.addEventListener('click', async () => {
  const module = await import('./feature.js');
  module.doSomething();
});

5. Array.prototype.flat() 和 flatMap()

轻松处理嵌套数组。

const nested = [1, [2, 3], [4, [5, 6]]];
const flattened = nested.flat(2);  // [1, 2, 3, 4, 5, 6]

6. 对象字面量增强

更简洁的对象属性和方法定义。

const name = 'Tom';
const age = 18;
const person = {
  name,
  age,
  sayHi() {
    console.log('Hi!');
  }
};

7. Promise.allSettled()

等待所有 Promise 完成,无论成功与否。

const promises = [
  fetch('/api/1'),
  fetch('/api/2'),
  fetch('/api/3')
];

const results = await Promise.allSettled(promises);

8. BigInt

处理超大整数。

const bigNumber = 9007199254740991n;
const result = bigNumber + 1n;

9. globalThis

统一的全局对象访问方式。

// 在任何环境下都可用
console.log(globalThis);

更强大的字符串匹配能力。

const str = 'test1test2test3';
const regexp = /test(\d)/g;
const matches = [...str.matchAll(regexp)];

11. 逻辑赋值运算符

简化条件赋值操作。

// 逻辑与赋值
x &&= y;  // 等同于 x && (x = y)

// 逻辑或赋值
x ||= y;  // 等同于 x || (x = y)

// 空值合并赋值
x ??= y;  // 等同于 x ?? (x = y)

12. Promise.any()

返回第一个成功的 Promise。

const promises = [
  fetch('/api/1'),
  fetch('/api/2'),
  fetch('/api/3')
];

try {
  const first = await Promise.any(promises);
  console.log(first);
} catch (error) {
  console.log('All promises rejected');
}

13. 数字分隔符

提高大数字的可读性。

const billion = 1_000_000_000;
const bytes = 0xFF_FF_FF_FF;

14. String.prototype.replaceAll()

替换字符串中的所有匹配项。

const str='hello hello hello
const newStr=str.replaceAll('hello','hi');//'hi hi hi'

15. WeakRef 和 FinalizationRegistry

更好的内存管理机制。

16. 顶层 await

在模块顶层使用 await

17. 类静态初始化块

更灵活的类静态成员初始化。

18. at() 方法 更直观的数组索引访问。

19. Object.hasOwn()

安全的属性检查方法。

20. 错误原因(Error Cause)

更好的错误追踪。

21. Array.prototype.group() 数组分组操作。

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

更清晰的正则表达式匹配结果。

23. Promise.withResolvers()

更优雅的 Promise 控制。

24. Array 复制方法 方便的数组操作。

const arr = [1, 2, 3];
const copy = arr.toReversed();  // 不修改原数组
const sorted = arr.toSorted();  // 不修改原数组

25. 装饰器

增强类和类成员的功能。

function logged(target, context) {
  return class extends target {
    exec(...args) {
      console.log('Starting execution...');
      const result = super.exec(...args);
      console.log('Finished execution.');
      return result;
    }
  };
}

@logged
class Example {
  exec() {
    // ...
  }
}

标签:25,const,name,50%,特性,api,Promise,console,fetch
From: https://www.cnblogs.com/helenMoon/p/18657270

相关文章

  • 德普微一级代理 DP038N04DGL TO-252 DPMOS N-MOSFET 40V 106A 3.5mΩ
    Features•UsesadvancedMOSFET-DPMOS2technology•Extremelylowon-resistanceRDS(on)•ExcellentQgxRDS(on)product(FOM)•QualifiedaccordingtoJEDECcriteriaProductSummaryPart#:DP038N04DGLVDS:40VRDS(on).typ(@VGS=10V)......
  • 德普微一级代理 DP040N04DTL TO-252 DPMOS N-MOSFET 40V 100A 3.2mΩ
    Features•UsesadvancedTrenchMOSFETtechnology•ExtremelylowRDS(on)/HighSpeedPowerSwitching•ExcellentQgxRDS(on)product(FOM)•QualifiedaccordingtoJEDECcriteriaProductSummaryPart#:DP040N04DTLVDS:40VRDS(on).......
  • 2025年程序员转行方向推荐
    前言在人工智能(AI)迅速发展的背景下,传统编程领域的程序员改何去何从呢?2025年程序员可以转行去哪些地方呢?其实在现在AI时代对于传统的程序员来说是一个绝佳的实现职业转型、提升薪资待遇的机遇。那么对于考虑转行到大模型领域的程序员来说,有几个热门岗位是值得特别关注的。......
  • 【2025-01-04】连岳摘抄
    23:59我们的生命需要有别人才完整。                                                 ——阿里斯托芬做生意,确实要考虑行业、环境。但是最关键的指标还是自己能不能......
  • 【2025-01-06】全屋保洁
    20:00生命其实是老天爷赐予的礼物,但人们都视为理所当然,不知珍惜,总是把钱看得比人自身还重要。                                                 ——乔纳森·海特周末......
  • 国产化板卡设计原理图:2136-KC705E增强版基于FMC接口的 JFM7K325T PCIeX8 接口卡
    KC705E增强版基于FMC接口的JFM7K325TPCIeX8接口卡         一、板卡概述   本板卡基于 FPGA JFM7K325T 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8、64bit DDR3容量2GByte,HPC的FMC连接器,板卡支持各种接口输入,软件支持windo......
  • 2025年测试用例管理看这一篇就够了 ----Codes 开源免费、全面的测试管理解决方案
    1、前言Codes是国内首款重新定义SaaS模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对30人以下团队免费。它通过整合迭代、看板、度量和自动化等功能,简化测试协同工作,使敏捷测试更易于实施。并提供低成本的敏捷测试解决方案,如同步在线离线测试用例、流程......
  • 2025省选模拟3
    2025省选模拟3(SNOI2024DAY1)好久没写博客了(这场打的很屎,遂记。T1树V图上来没什么思路,然后打了暴力就run了,没去仔细想。首先$f$相同的点肯定构成一个连通块,否则不合法,所以我们可以缩点,然后枚举$f_{i,j}$表示$a_i=j$时$i$及$i$子树内合法方案数,......
  • 2025年广告第一单,试试这款永久免费的开源BI工具
    元旦之后,我们和国内领先的开源软件公司飞致云达成了重要合作,合作分两部分,一是推广飞致云旗下的免费开源软件,一是双方合作推出联合会员。飞致云旗下有多款免费开源软件,1月6日上线了第一个文字链广告,推广的是是飞致云旗下永久免费的开源BI工具——DataEase。人人可用的BI......
  • 25.01.06
    原题+暴力场汗流浃背了A此事在240729.md中亦有记载/***设f[i][x]表示i时刻x点的期望贡献*小刻都会的转移方程:* f[i+1][y]+=f[i][x]*Pow(Out[x],mod-2);*然后t[i]时刻v[i]点的答案++*f[i]由f[i-1]转移而来,转移过程可以看作矩......