【问题标题】:Where does source code for JavaScript itself live? [closed]JavaScript 本身的源代码在哪里? [关闭]
【发布时间】:2021-12-06 20:57:31
【问题描述】:

我不知道这是不是一个愚蠢的问题。但是,如果我想看到甚至为 JavaScript 本身做出贡献,我会去哪里?我短暂地遇到了https://github.com/tc39,但不确定这是否是正确的地方。

我想真正看到类似 .toString() 之类的实现,以了解其背后的代码。

【问题讨论】:

  • 不同的浏览器有不同的 JavaScript 引擎。 Chrome 有 V8,Safari 有 Nitro 等。
  • 那么,实际上不可能在该引擎中看到 JavaScript 的实现。那是开源的吗?
  • 一些实现是开源的。特别是 Chromium 和 Firefox。熟悉这些的人应该能够为您指出正确的方向(我相信您得到的答案已经在做)。但是,@Spectric 的重点是没有一个地方,有多个。是的,有些是关闭的。原因是该规范对任何人都是开放的,即使在闭源软件中也是如此。
  • 现代 JavaScript 运行时系统极其复杂,开发其中一个需要在现代 JIT 系统和其他优化技术方面具有相当高的经验。

标签: javascript ecmascript-6 ecmascript-5 ecma


【解决方案1】:

官方规范生活在here。虽然它不完全是源代码,但它完整地描述了 JavaScript 引擎应该实现的所有逻辑。

在机器上运行 JavaScript 的实际代码没有一个地方,因为有许多不同的 JavaScript 引擎。

有 V8,与 Chrome 相关的浏览器(和现代 Edge)在其上运行。其来源可以在here找到。

Spidermonkey,Firefox 就在它上面运行。

Mac 应用程序在 WebKit 上运行,它内置于 JavaScriptCore JS 引擎中。还有更多。

如果你想“为 JavaScript 本身做贡献”,那么为 specification proposals 做贡献是一条路——一旦规范中有内容,就取决于各种 JavaScript 引擎来实现它(他们的各种维护者都很高兴去做,即使它有时不会及时发生)。

如果您为其中一个引擎的开发做出贡献,您将改进该引擎,但不会改进整个世界的 JavaScript 环境。

【讨论】:

  • WebKit 是图形引擎(Blink 是从中分叉出来的)。 Webkit 基础浏览器中的 JS 引擎是 JavaScriptCore
  • 另外,“如果您为其中一个引擎的开发做出贡献,您将改进该引擎,但不会改进整个世界的 JavaScript 环境。”实际上,一个引擎所做的大多数改进都是在那时转向规范并使整个生态系统受益。这不是单向发展。
最近更新 更多