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

Javascript V8是否只编译我们想要运行的代码?,javascript,v8,Javascript,V8,我正在学习的内部工作原理,对它翻译代码的方式有点困惑,也就是说,我们有一个按钮的eventListener,当我们单击按钮时,该按钮函数将执行 是真的吗 只有eventListener和函数被解释为字节码 只有我们想要运行的代码被解释成字节码 (这里是V8开发者。)通常是的。V8根据需要编译代码(JavaScript到字节码),因此(通常)JavaScript函数在第一次运行时将编译为字节码 该语句可能有例外:可以合理地假设顶级代码将立即编译。当V8的解析器看到(function)时,它还假设

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

是真的吗

  • 只有eventListener和函数被解释为字节码
  • 只有我们想要运行的代码被解释成字节码
(这里是V8开发者。)通常是的。V8根据需要编译代码(JavaScript到字节码),因此(通常)JavaScript函数在第一次运行时将编译为字节码

该语句可能有例外:可以合理地假设顶级代码将立即编译。当V8的解析器看到
(function
)时,它还假设这是一个所谓的“iLife”,并根据它将以
}结尾的猜测热切地编译它()。这些优化的具体细节可能会随着时间的推移而改变


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

感谢您的友好回答,好吧,但如果我们调用function(然后将其解释为字节码),然后调用functionB会怎么样。当我们调用另一个函数时,functionA是否会保留在V8的内存中?或者V8一次只解释一个函数?是的,一旦字节码被创建,它就会继续存在。