我正在运行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
我认为此运行时功能仍然包含在内,或者我做错了什么。
答案 0 :(得分:2)
这是因为您依赖于semicolon
的自动 Javascript
插入(您的意图没有实现)。
您的没有;
的代码将转换为modulo
操作,这是有效的JavaScript
操作,因此在第一次调用{{之后,没有理由为您添加;
1}}。
square()
以这种方式编写(如square() % OptimizeFunctionOnNextCall(square);
所示),显然看起来像JavaScript
操作。现在很明显为什么modulo
是OptimizeFunctionOnNextCall
。
将代码更改为(注意undefined
):
;
以下是let operand = 3;
function square() {
return operand * operand;
}
square(); // <-- here
%OptimizeFunctionOnNextCall(square);
square();
的{{3}}(SO用户)介绍为什么您不应该错过T.J. Crowder