我应该编译到哪个版本的 JavaScript?

Which version of JavaScript should I compile to?

假设我正在使用编译为 JavaScript 的语言编写 NodeJS 项目,例如 TypeScript。使用 TypeScript(或其他使用 Babel 的东西),我可以选择将我的代码编译为 JavaScript 的任何版本,无论是 ES3ES5ES6ES2017,等等

显然,如果我在编写客户端内容,我会坚持使用 ES5 等早期版本,以保持对用户的兼容性。但是,由于我正在专门为最新版本的 NodeJS 编写服务器端内容,因此我可以使用这些选项中的任何一个。我想知道的是,我应该使用哪个版本来帮助提供最佳性能?

NodeJS 的解释器 V8 会根据源代码的编写方式提供不同的优化,所以我想选择一个或另一个可能会带来不同的好处。一方面,你会认为选择旧版本的 JS 会更好,因为它的存在时间更长并且有更多时间进行优化。另一方面,编译到更高版本的 JS 会产生更清晰的代码,并依赖于更新的可用功能,这也可能有所帮助。

如有任何想法/反馈,我们将不胜感激!

我确实认为这个问题主要是基于意见的,但是..我不认为一个有效的问题应该被忽略,只是因为有一部分可能被认为是主观的。因此,尽管您应该对此持保留态度(因为归根结底,这是您的应用程序和您使用的版本的选择),但我希望这能将您推向正确的方向:


我个人认为,您应该编译到最新的 ES 版本。为什么?
首先,让我们回顾一下事实:

  • 兼容性不是什么大问题。为了兼容性,许多旧功能 can be polyfilled
  • 正如@Ry- 有效地指出的那样,当一个功能被转换为旧的 JS 版本时,它的行为可能会有所不同,通常情况下您甚至可能没有注意到或没有预料到。
  • 每个 ES 版本都有一些 QoL 更改、错误修复和代码改进
  • 提供新的有用功能

现在,这更多是个人意见,但我坚持:

  • I don't think we as developers should look back and use obsolete or downright non-functioning techniques and bash our heads against the wall. Instead of complaining about others not wanting to adapt, be part of the movement and make others adapt. I'm not saying your site should not be "fool-proof" for old browsers, quite the opposite, just don't get down to their level and limit yourself because of it. Go with the flow!

所以总结一下,除非你有一个非常特殊的原因,为什么你不应该使用最新版本,然后总是使用最新版本(LTS,不是最新的测试版)。