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

ECMAScript 12 (ES12, ES2021) 新特性

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

No.内容链接
1Openlayers 【入门教程】 - 【源代码+示例300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3Cesium 【入门教程】 - 【源代码+图文示例200+】
4MapboxGL【入门教程】 - 【源代码+图文示例150+】
5前端就业宝典 【面试题+详细答案 1000+】

在这里插入图片描述

文章目录

      • 新特性概述
        • 1. Promise.any()
        • 2. String.prototype.replaceAll()
        • 3. WeakRefs
        • 4. Logical Assignment Operators
        • 5. New Methods in RegExp
        • 6. Numeric Separators


ECMAScript 12(通常称为ES2021或ES12)是JavaScript语言的一个版本,它在2021年由ECMA国际标准化组织发布。虽然这个版本引入的变化相对较小,但它仍然包含了一些有用的新特性。

新特性概述

1. Promise.any()

Promise.any() 是一个新方法,用于处理多个Promise。如果其中任何一个Promise解析成功,则返回第一个成功的Promise的结果;如果所有的Promise都被拒绝,则返回一个聚合错误。

示例:

const promise1 = Promise.reject(new Error('Fail'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 500, 'Success'));
const promise3 = Promise.reject(new Error('Fail'));Promise.any([promise1, promise2, promise3]).then((value) => console.log(value)) // Logs "Success".catch((error) => console.error(error));
2. String.prototype.replaceAll()

replaceAll() 方法返回一个新的字符串,其中所有匹配给定模式的子串都被替换为指定的替换文本。

示例:

const str = 'hello world';
console.log(str.replaceAll('l', 'L')); // Logs "heLLo worLd"
3. WeakRefs

WeakRef 允许你持有对象的一个弱引用,这意味着当对象不再被任何强引用所引用时,垃圾回收器可以自由地回收该对象。

示例:

class Resource {constructor(data) {this.data = data;}
}const resource = new Resource('some data');
const weakRef = new WeakRef(resource);
console.log(weakRef.deref()); // Logs the Resource object// Clearing the strong reference.
resource = null;
// After garbage collection, the weakRef should be null.
setTimeout(() => {console.log(weakRef.deref()); // Logs "undefined" if garbage collected
}, 0);
4. Logical Assignment Operators

逻辑赋值运算符允许你使用逻辑AND (&&=) 和 OR (||=) 运算符进行赋值。

示例:

let a = false;
let b = true;a ||= 1; // a remains false
b ||= 2; // b remains true
a &&= 3; // a remains false
b &&= 4; // b becomes 4console.log(a); // Logs "false"
console.log(b); // Logs "4"
5. New Methods in RegExp

在正则表达式中添加了新的方法,如 lastIndex 的 setter。

示例:

const re = /./g;
re.lastIndex = 10; // Set lastIndex to 10
console.log(re.lastIndex); // Logs "10"
6. Numeric Separators

数字分隔符 _ 可以用来更清晰地表示大数。

示例:

const largeNumber = 1_000_000;
console.log(largeNumber); // Logs "1000000"

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C:关于static 和 extern 关键字的介绍-学习笔记
  • electron-updater实现electron全量更新和增量更新——渲染进程UI部分
  • 设计模式 之 —— 抽象工厂模式
  • C++生化危机1.5源码
  • C# Unity 面向对象补全计划 之 初识继承方法与多态
  • CC++内存魔术:掌控无形资源
  • 知识见闻 - 什么样的人值得结交
  • Prometheus 监控 Nginx
  • 【C++高阶】:C++11的深度解析下
  • Redis结合Lua脚本的简单使用
  • 使用MySQLdump定时备份数据库实战
  • [Kimi笔记]C# 中,public、private 和 internal 访问修饰符
  • H5+JS 4096小游戏
  • 从零入门CV图像竞赛(2024全球Deepfake攻防挑战赛)
  • Java基础:反射
  • 《深入 React 技术栈》
  • go语言学习初探(一)
  • Java|序列化异常StreamCorruptedException的解决方法
  • js
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Redux系列x:源码分析
  • SQL 难点解决:记录的引用
  • TypeScript迭代器
  • 后端_ThinkPHP5
  • 回流、重绘及其优化
  • 为什么要用IPython/Jupyter?
  • 仓管云——企业云erp功能有哪些?
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 交换综合实验一
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​2020 年大前端技术趋势解读
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​渐进式Web应用PWA的未来
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #define
  • #php的pecl工具#
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (CPU/GPU)粒子继承贴图颜色发射
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)程序员疫苗:代码注入
  • (转载)从 Java 代码到 Java 堆
  • (轉)JSON.stringify 语法实例讲解
  • *上位机的定义
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET多线程执行函数
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • ?php echo ?,?php echo Hello world!;?
  • @GetMapping和@RequestMapping的区别
  • @SuppressWarnings注解
  • [012-1].第12节:Mysql的配置文件的使用