【问题标题】:Does node.js compile JavaScript?node.js 是否编译 JavaScript?
【发布时间】:2017-04-08 15:40:34
【问题描述】:

Node.js 使用 V8 编译 JavaScript 作为优化策略。

那么,通过node.js / V8在服务器端运行的JavaScript是编译还是解释?

【问题讨论】:

标签: javascript node.js v8


【解决方案1】:

解释器:语言运行时/虚拟机的(核心)模块部分,它针对以该模块所在的虚拟机所在的语言表达的一组表达式执行特定的“操作”。

编译器:语言运行时的(核心)模块部分,它将以模块所在的编译器的语言表达的一组表达式“转换”为运行表达式所在架构的原生指令集。

标准 Node.js 是针对 V8 构建的,它将每个 Javascript 代码 sn-p 编译为本机指令。您可以在命令行中使用 --print_code 标志来查看正在编译哪些脚本,并编译成什么。

希望这会有所帮助。

【讨论】:

  • 那些反对这个答案的人,请说明你为什么这样做,好吗?
【解决方案2】:

V8 引擎将 javascript 编译为一系列机器代码指令,一次一个函数 (usually, functions are not compiled until the first call)。

V8 解析代码并提取 AST(抽象语法树), 执行范围分析以了解符号所指的上下文,并将其转换为机器代码指令。

正如您所提到的,V8 高度关注性能:除了编译每个函数的完整编译器外,V8 还包含额外的编译器,负责优化标识为经常使用的块(称为Crankshaft

所以不,没有对 javascript 代码的解释,而是机器代码的翻译和执行。

【讨论】:

    猜你喜欢
    • 2012-01-29
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多