V8 是否只编译我们想要 运行 的代码?
Does V8 compiles only the code that we want to run?
我正在学习 V8 的内部工作原理,对它翻译我们代码的方式有点困惑,也就是说,我们有一个按钮的 eventListener,当我们单击该按钮时,函数将执行.
这是真的吗:
- 只有 eventListener 和函数被解释为字节码?
- 并且只有我们想要运行的代码被解释成字节码?
(此处为 V8 开发人员。)通常是的。 V8 按需编译代码(JavaScript 到字节码),因此(通常)一个 JavaScript 函数将在第一次被编译为字节码时 运行.
该声明可能有例外:假设顶级代码将立即编译是合理的。当 V8 的解析器看到 (function
时,它也假设这是一个所谓的 "IIFE",并根据它会以 })();
结尾的猜测来急切地编译它。此类优化的具体细节可能会随着时间而改变。
您可以放心地假设,当您包含一个大型库时,所有这些代码都不会预先编译,而只会在执行时编译。
我正在学习 V8 的内部工作原理,对它翻译我们代码的方式有点困惑,也就是说,我们有一个按钮的 eventListener,当我们单击该按钮时,函数将执行.
这是真的吗:
- 只有 eventListener 和函数被解释为字节码?
- 并且只有我们想要运行的代码被解释成字节码?
(此处为 V8 开发人员。)通常是的。 V8 按需编译代码(JavaScript 到字节码),因此(通常)一个 JavaScript 函数将在第一次被编译为字节码时 运行.
该声明可能有例外:假设顶级代码将立即编译是合理的。当 V8 的解析器看到 (function
时,它也假设这是一个所谓的 "IIFE",并根据它会以 })();
结尾的猜测来急切地编译它。此类优化的具体细节可能会随着时间而改变。
您可以放心地假设,当您包含一个大型库时,所有这些代码都不会预先编译,而只会在执行时编译。