Node.js 0.12 中提供的 ECMAScript 6 功能

IT技术 javascript node.js v8 ecmascript-6
2021-01-13 00:38:14

Node.js (0.12) 的新稳定版本最近发布,其中包含升级后的谷歌 v8 JavaScript 引擎v3.28.73

Node.js 中当前存在哪些 ECMAScript 6 特性,但不使用该--harmony标志?

我检查了几个声称列出 ES 6 特性的站点,但它们似乎都过时了——最突出的是这张表更新: 现在更新为 0.12 的当前 Node.js 状态),因为其中一些特性被列为--harmony我发现其中一些默认启用(地图、集合、符号,仅举几例)时需要标志。更新节点特定的表已经可用

此外,试图纯粹为 v8 引擎搜索此信息会提供过于最新的信息 - 当前的 v8 版本是4.2.*,这远远领先于 Node.js 使用的版本。

我希望这个问题(及其答案)将成为 Node.js 开发人员现在可以使用的 ES 6 特性的综合总结。

我目前知道的在 Node.js 0.12 中启用的 ES 6 功能:

  • 地图、集合 / WeakMaps、WeakSets
  • 符号
  • 对象观察
  • Promise
  • 数字
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • .EPSILON
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • 数学
    • .clz32
    • .imul
    • 。符号
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .cosh
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot
2个回答

--harmony标志特点

我认为这就是我们没有--harmony旗帜的全部

--harmony标志的功能:

我认为仅此而已。也许如果我忘记了什么 - 我稍后会添加到列表中。

这正是我希望得到的那种答案 - 干净,并带有指向文档/示例的链接!--harmony标志下列出功能的额外积分。:)
2021-03-15 00:38:14
字符串模板是有还是没有--harmony就像在回勾${varname}字符串语法中一样?
2021-03-21 00:38:14
nodejs 在任何地方都有记录吗?这是非常有用的。
2021-03-23 00:38:14
@JonRed 也许您的运行失败是由于其他原因,而不是因为常数。我刚刚试过了,我的跑步效果很好。
2021-03-26 00:38:14
@Sukima Node v0.12 不支持模板字符串,也不支持--harmony标志,也不支持模板字符串但是iojs 不需要任何标志就支持它们。
2021-03-31 00:38:14

ES6 功能分阶段渗透到 Node。Node 使用 Google 的 V8 作为 JavaScript 引擎。Node 支持的特性意味着它首先必须在 V8 中实现,然后 Node 团队必须将它合并到 Node.js 中。

Google 的团队大约每六周发布一个新版本的 V8,然后由 Node 团队使用它。

手动策划的语言功能列表很好,但很快就会过时。Node 0.12 不再是不断变化的,但通常一旦推出新版本的 Node,手动策划的列表就会过时。

这里有两种替代方法来检查 Node 版本支持哪些功能,而不依赖于静态列表。有关使用这些的进一步阅读和更详细的示例,您可以查看“如何检查 Node.js 是否支持 ES 6 语言功能”

#1 简单 - 兼容性表

动态生成的列表依赖于小测试来确认语言功能的存在,从而更好地保持最新状态。一个这样的流行列表是 kangax.github.io/compat-table/es6/。我们只对 Node 特性感兴趣,所以你可以使用

http://node.green

它利用与 kangax 站点相同的数据。

#2 Hard - 回溯 V8 版本

Node 使用 V8 引擎,因此确定 Node 中包含的 V8 版本告诉我们支持哪些 ES6 语言特性。您可以找出 Node 中捆绑了哪个版本的 V8 node -p process.versions.v8

$ node -p process.versions.v8
4.6.85.31

然后使用 Google 的 V8 项目资源,您可以找到每个版本中实现了哪些功能。V8 项目保留了一个问题跟踪器,您可以在其中找到带有和声标签标记的 ES6+ 之外的功能