登录/注册

es10

更多

好的!ES10 指的是 ECMAScript 2019(ES2019),它是 JavaScript 语言的第 10 个主要版本。以下是 ES10 中引入的一些重要特性,用中文解释:

  1. Array.prototype.flat()Array.prototype.flatMap()

    • flat(depth): 将嵌套数组(多维数组)“扁平化”成一个新数组。depth 参数指定要扁平的嵌套层数(默认是 1,Infinity 表示全部扁平)。
      const arr = [1, 2, [3, 4, [5, 6]]];
      arr.flat();      // [1, 2, 3, 4, [5, 6]] (默认 depth=1)
      arr.flat(2);     // [1, 2, 3, 4, 5, 6]   (depth=2)
    • flatMap(callback): 先对数组的每个元素执行一个映射函数(就像 map),然后将结果数组扁平化一层(相当于 map + flat(1))。非常高效。
      const arr = ["hello world", "es10 is cool"];
      arr.flatMap(str => str.split(' ')); // ["hello", "world", "es10", "is", "cool"]
      // 等价于 arr.map(str => str.split(' ')).flat()
  2. Object.fromEntries(iterable)

    • 将键值对列表(如 MapArray 的项是 [key, value] 的数组)转换成一个新的对象。是 Object.entries(obj) 的逆操作。
      const entries = [['name', 'Alice'], ['age', 30]];
      const obj = Object.fromEntries(entries); // { name: "Alice", age: 30 }
      const map = new Map([['id', 123], ['title', 'ES10']]);
      const objFromMap = Object.fromEntries(map); // { id: 123, title: "ES10" }
  3. String.prototype.trimStart()String.prototype.trimEnd()

    • trimStart(): 移除字符串开头的空白字符(空格、制表符、换行符等)。
    • trimEnd(): 移除字符串末尾的空白字符。
    • 它们分别有别名 trimLeft()trimRight()(功能相同,但标准推荐使用 trimStart/End)。
      const str = "   Hello ES10!   ";
      str.trimStart(); // "Hello ES10!   "
      str.trimEnd();   // "   Hello ES10!"
      str.trim();      // "Hello ES10!" (移除两端,ES5 已有)
  4. 可选的 catch 绑定 (Optional Catch Binding)

    • 允许在 try...catch 语句中省略 catch 后面的括号和错误变量绑定,如果你不需要访问错误对象的话。

      // ES10 之前 (必须绑定 error 变量)
      try {
        // ... 可能出错的代码
      } catch (error) {
        // 即使不需要 error 对象,也必须写
        console.log('Something went wrong');
      }
      
      // ES10 允许省略
      try {
        // ... 可能出错的代码
      } catch { // 没有 (error) 了
        console.log('Something went wrong, but I don\'t care about the details');
      }
  5. Symbol.prototype.description

    • 提供一个只读属性,用于获取 Symbol 创建时传入的可选描述字符串。之前需要通过 toString() 方法间接获取描述,现在更直接方便。
      const sym = Symbol('This is a description');
      console.log(sym.description); // "This is a description"
      const sym2 = Symbol();
      console.log(sym2.description); // undefined
  6. JSON 超集 (JSON Superset)

    • 修正了 ECMAScript 字符串字面量语法与 JSON 字符串语法的一个微小差异:现在允许在字符串字面量中使用未转义的行分隔符 (U+2028)段落分隔符 (U+2029) 字符。这使得 ECMAScript 成为 JSON 的严格超集,意味着任何有效的 JSON 文本现在也是语法上有效的 ECMAScript 代码(当解析为字符串时)。这主要解决了之前在这些字符出现在 JSON 字符串中时可能导致解析错误的问题。
  7. 格式良好的 JSON.stringify() (Well-formed JSON.stringify())

    • 改进了 JSON.stringify() 在处理代理对(Surrogate Pairs,用于表示 Unicode 补充平面字符如 emoji)时的行为。如果输入包含单独出现的代理项(即不成对的代理项,这是无效的 UTF-8/UTF-16),ES10 规定 JSON.stringify() 会返回一个未定义的 Unicode 转义序列 (\uFFFD,即替换字符 �),而不是可能产生无效的 UTF-8 输出。这确保了输出的字符串始终是格式良好的 UTF-8。
  8. Function.prototype.toString() 修订

    • 要求 toString() 方法返回函数源代码的精确文本,包括原始的空格、注释和语法细节(如 function 关键字后的空格)。之前的标准允许引擎在实现上有一定的自由度,可能省略注释或空白。这个修订使得函数的字符串表示更加可靠和一致,有助于调试和代码分析工具。
      function /* a comment */ foo() {}
      console.log(foo.toString()); // ES10: 应输出包含注释的完整源代码 "function /* a comment */ foo() {}"
  9. Array.prototype.sort() 稳定性 (Stable Sort)

    • 规定数组的 sort() 方法必须使用稳定的排序算法。稳定排序意味着如果两个元素在排序依据上相等,那么它们在排序后数组中的相对顺序会保持与排序前相同。这对于依赖元素原始顺序的场景(如多条件排序)非常重要。现代浏览器引擎基本都已实现稳定排序(如 TimSort),ES10 将其纳入语言规范进行保证。

总结:

ES10 (ES2019) 主要关注提升开发者的便利性(flat, flatMap, trimStart/End, fromEntries, 可选 catch 绑定, Symbol.description)、解决语言规范细节问题(JSON 超集、格式良好的 stringify、函数 toString 精确性)以及保证重要内置方法的行为(稳定的 Array.sort)。这些特性让 JavaScript 代码更简洁、更健壮、更可预测。

AI赋能 车行无忧|腾视科技ES10终端,为车辆装上“智慧大脑”

腾视科技,以车载智能领域深耕多年的技术积淀,破局而出!‌ 专为特种车辆与复杂作业场景量身打造的ES10车载智能终端,以‌超强环境适应性‌(-30℃~75℃宽温运行)、‌多算法协同防护‌(AI实时预警

2025-10-28 10:15:35

AI赋能 车行无忧|腾视科技ES10终端,为车辆装上“智慧大脑”

,破局而出!‌ 专为特种车辆与复杂作业场景量身打造的ES10车载智能终端,以‌超强环境适应性‌(-30℃~75℃宽温运行)、‌多算法协同防护‌(AI实时预警+边缘计算决策)、‌丰富扩展能力‌(多传感器融合)三大核心优势,重构车载安全管理范式。

2025-10-28 10:12:25

车载智能终端ES10

1970-01-01 08:00:00 至 1970-01-01 08:00:00

es8316音频解码芯片中文数据手册

es8316是什么芯片?ES8316音频编解码器具有低功耗的特性,具有单声道ADC和立体声DAC。可用于模拟话筒(如驻极体话筒)录音或数字话筒录音,在ES

资料下载 jfsteve 2022-04-15 10:44:48

ES3AC THRU ES3JC SMC规格书下载

ES3AC THRU ES3JC SMC规格书下载

资料下载 MDD辰达半导体 2022-01-25 15:41:36

ES2A-THRU-ES2J-SMB规格书下载

ES2A-THRU-ES2J-SMB规格书下载

资料下载 MDD辰达半导体 2021-12-24 14:40:11

台达DVP-ES2系列PLC编程操作手册

台达DVP-ES2系列PLC编程操作手册

资料下载 爱在公元前 2021-07-21 09:36:49

物料申报表:MDF_193720002_AS3701B-BWLM-ES_MD000333_1-00.pdf

MDF_193720002_AS3701B-BWLM-ES

资料下载 王平 2021-02-22 10:22:46

1.0K-ES-10PWB

1.0K-ES-10PWB

2024-06-20 20:39:39

深度解读ES+Redis+MySQL的高可用架构设计

我们有两个机房,分别是机房 A 和机房 B。我们把 ES 主集群部署在机房 A,把 ES 备集群部署在机房 B。会员系统的读写都在 ES 主集群

2023-06-01 10:09:30

ES10J

ES10J

2023-03-28 18:07:13

KT10ES

KT10ES - CIT SWITCH - CIT Relay & Switch

2022-11-04 17:22:44

ES015-10

ES015-10 - 150 WATTS PROGRAMMABLE DC SUPPLY - Powerbox

2022-11-04 17:22:44

ES10S

ES10S - 2.0 Ampere Superfast Rectifiers - Fairchild Semiconductor

2022-11-04 17:22:44

服务器专用万兆单向传输光纤网卡——FM-JL82599ES-TX/RX

飞迈瑞克FM-JL82599ES-TX/RX是一套服务器专用万兆单向传输光纤网卡,分别有10G单向发送网卡(FM-JL82599ES-TX)和

2019-11-08 15:54:13

7天热门专题 换一换
相关标签