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

Ray*_*ond 1 v8 node.js

我正在运行 Node v11.xx,并收到 V8 运行时函数的错误。

let operand = 3;
function square() {
    return operand * operand;
}
square()
%OptimizeFunctionOnNextCall(square);
square()
Run Code Online (Sandbox Code Playgroud)

运行:

node --allow-natives-syntax -trace_opt -trace_deopt main.js
Run Code Online (Sandbox Code Playgroud)

收到错误

ReferenceError: OptimizeFunctionOnNextCall is not defined
Run Code Online (Sandbox Code Playgroud)

我认为这个运行时函数仍然包含在内,或者我做错了什么。

156*_*223 6

这是因为您依赖于自动 semicolon插入Javascript(这违背了您的意图)。

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

square() % OptimizeFunctionOnNextCall(square);
Run Code Online (Sandbox Code Playgroud)

这样写(如图JavaScript所示),显然看起来像modulo操作。现在原因很明显OptimizeFunctionOnNextCallundefined

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

let operand = 3;
function square() {
  return operand * operand;
}
square(); // <-- here
%OptimizeFunctionOnNextCall(square);
square();
Run Code Online (Sandbox Code Playgroud)

这是(SO 用户)的一篇很好的读物T.J. Crowder,解释了为什么你不应该错过;