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
我以为这个运行时函数仍然包含在内,还是我做错了什么。
这是因为您依赖 自动 semicolon
由 Javascript
插入(这不符合您的意图)。
您的代码没有 ;
转换为 modulo
操作,这是一个有效的 JavaScript
操作,因此没有理由在第一次调用后为您添加 ;
square()
.
square() % OptimizeFunctionOnNextCall(square);
这样写(如JavaScript
所见),显然是modulo
操作。现在很明显为什么 OptimizeFunctionOnNextCall
是 undefined
.
将您的代码更改为(注意 ;
):
let operand = 3;
function square() {
return operand * operand;
}
square(); // <-- here
%OptimizeFunctionOnNextCall(square);
square();
这是 T.J. Crowder
(SO 用户)的 nice read 关于为什么你不应该错过 ;
我是 运行 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
我以为这个运行时函数仍然包含在内,还是我做错了什么。
这是因为您依赖 自动 semicolon
由 Javascript
插入(这不符合您的意图)。
您的代码没有 ;
转换为 modulo
操作,这是一个有效的 JavaScript
操作,因此没有理由在第一次调用后为您添加 ;
square()
.
square() % OptimizeFunctionOnNextCall(square);
这样写(如JavaScript
所见),显然是modulo
操作。现在很明显为什么 OptimizeFunctionOnNextCall
是 undefined
.
将您的代码更改为(注意 ;
):
let operand = 3;
function square() {
return operand * operand;
}
square(); // <-- here
%OptimizeFunctionOnNextCall(square);
square();
这是 T.J. Crowder
(SO 用户)的 nice read 关于为什么你不应该错过 ;