Yuan的博客
EN

ES14(ES2023)的 4 个重要新特性

  1. 由后往前查找数组的方法:findLast() 和 findLastIndex()
  • 如果找到了符合条件的元素,findLast() 方法会返回该元素的值; 如果没有找到符合条件的元素,findLast() 方法会返回 undefined
  • findLastIndex() 它会返回从尾部查找中符合条件的第一个元素的索引; 如果没有找到符合条件的元素,findLastIndex() 方法会返回 -1。
  • 说明:这两个方法的功能与 find() / findIndex() 完全一致,只是将查找方向改为从后往前,更方便查找“最后出现的”符合条件的元素。
  1. 新增 4 个不改动到原数组的操作方法
  • toReversed():将数组中的元素反转(相对应会改变数组的方法:reverse())
  • toSorted(fn):将数组中的元素排序(相对应会改变数组的方法:sort())
  • toSpliced(start, deleteCount, …items):从数组中指定位置开始删除指定数量的元素,并可选择在删除后新增新元素(相对应会改变数组的方法:splice())
  • with(index, value):将数组索引处的值,替换为新值
  • 说明: 这四个方法的设计目的,就是提供与原本会“改动原数组”的方法行为一致、但无副作用(不 mutate 原数组)的新版本。
  1. Hashbang 语法(Hashbang Grammar)
  • Hashbang = #! + 解释器路径,只在文件第一行有效,用来指定执行脚本所用的解释器。如:
  • /usr/bin/python3
  • /usr/bin/node
  • /bin/bash
  • 在执行前需要为文件添加执行权限chmod +x app.js =让文件具有“可作为程序运行”的权限,否则 hashbang 根本不会生效。
  • 你写的 Node、Python、Ruby……都不是直接在 CPU 上跑,它们都需要一个“翻译官”来逐行把代码解释成机器能跑的东西。这个“翻译官”就是解释器(interpreter)
  • 说明: Hashbang 让 JS 文件可以像 shell、Python、Ruby 脚本一样直接运行(例如 ./app.js),而不是只能通过 node app.js 来执行。
  1. WeakMap 新增支援 Symbol 作为键名 (key)
  • 以往 WeakMap 的 key 只能是对象,现在 ES2023 开始,Symbol 也可以作为 key 使用。这让在 WeakMap 中存放“全局唯一、不暴露的元数据”更灵活,尤其适合库作者或需要隐式元数据管理的场景。