V8 是否只编译我们想要 运行 的代码?

Does V8 compiles only the code that we want to run?

我正在学习 V8 的内部工作原理,对它翻译我们代码的方式有点困惑,也就是说,我们有一个按钮的 eventListener,当我们单击该按钮时,函数将执行.

这是真的吗:

(此处为 V8 开发人员。)通常是的。 V8 按需编译代码(JavaScript 到字节码),因此(通常)一个 JavaScript 函数将在第一次被编译为字节码时 运行.

该声明可能有例外:假设顶级代码将立即编译是合理的。当 V8 的解析器看到 (function 时,它也假设这是一个所谓的 "IIFE",并根据它会以 })(); 结尾的猜测来急切地编译它。此类优化的具体细节可能会随着时间而改变。

您可以放心地假设,当您包含一个大型库时,所有这些代码都不会预先编译,而只会在执行时编译。