JavaScript 内联函数,如 C++

Vla*_*nov 5 javascript gruntjs gulp

未来的 ECMAScript 标准和/或任何 grunt/gulp 模块是否有能力像在 C++ 中那样在 JavaScript 中创建内联函数(或在某些地方内联普通函数调用)?

这是一个简单方法的例子,而不是使向量的点积

Vector.dot = function (u, v) {
  return u.x * v.x + u.y * v.y + u.z * v.z;
};
Run Code Online (Sandbox Code Playgroud)

每次当我写一些东西时

Vector.dot(v1, v2)
Run Code Online (Sandbox Code Playgroud)

我想确保 javascript 只是进行内联计算,而不是进行函数调用

Fel*_*tus 3

鉴于OP要求性能,我会尽力提供答案。

如果您正在针对 V8 引擎进行优化,您可以查看以下文章,了解哪些函数被内联,以及去优化如何影响您的代码。

http://floitsch.blogspot.com/2012/03/optimizing-for-v8-inlined.html

例如,如果您想查看是否Vector.dot内联,请使用以下命令行,其中script.js包含您的定义和调用代码:

d8 --trace-inlining script.js 
Run Code Online (Sandbox Code Playgroud)

优化算法因引擎而异,但内联概念应该几乎相同。如果您想了解其他引擎,请将问题修改为包含确切的引擎,以便从 JS 引擎专家那里获得一些见解。