Node.js %OptimizeFunctionOnNextCall - 运行时函数错误

Node.js %OptimizeFunctionOnNextCall - Runtime Function Error

我是 运行 Node v11.x.x,收到 V8 运行时函数的错误。

let operand = 3;
function square() {
    return operand * operand;
}
square()
%OptimizeFunctionOnNextCall(square);
square()

运行:

node --allow-natives-syntax -trace_opt -trace_deopt main.js

收到错误

ReferenceError: OptimizeFunctionOnNextCall is not defined

我以为这个运行时函数仍然包含在内,还是我做错了什么。

这是因为您依赖 自动 semicolonJavascript 插入(这不符合您的意图)。

您的代码没有 ; 转换为 modulo 操作,这是一个有效的 JavaScript 操作,因此没有理由在第一次调用后为您添加 ; square().

square() % OptimizeFunctionOnNextCall(square);

这样写(如JavaScript所见),显然是modulo操作。现在很明显为什么 OptimizeFunctionOnNextCallundefined.

将您的代码更改为(注意 ;):

let operand = 3;
function square() {
  return operand * operand;
}
square(); // <-- here
%OptimizeFunctionOnNextCall(square);
square();

这是 T.J. Crowder(SO 用户)的 nice read 关于为什么你不应该错过 ;