声明变量JavaScript的性能含义

Joh*_*uma 3 javascript

这样做是否有任何表现(或其他)影响;

// ...
const greeting = `Hello, ${name}!`;
return greeting;
Run Code Online (Sandbox Code Playgroud)

与此相比;

// ...
return `Hello, ${name}!`;
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 5

是的,为变量名赋值,然后返回该变量比仅返回值需要更多的努力.有关迷你性能测试,请参阅:

(警告:以下内容将阻止您的浏览器,具体取决于您的规格)

// references to "name" removed to provide a more minimal test:

const p0 = performance.now();
for (let i = 0; i < 1e9; i++) {
  (() => {
    const greeting = `Hello!`;
    return greeting;
  })();
}
const p1 = performance.now();
for (let i = 0; i < 1e9; i++) {
  (() => {
    return `Hello!`;
  })();
}
const p2 = performance.now();

console.log(p1 - p0);
console.log(p2 - p1);
Run Code Online (Sandbox Code Playgroud)

差异非常小,但它始终存在,至少在V8中 - 函数调用的开销大部分都掩盖了它.

也就是说,这听起来像是过早的优化 - 它可能更好地瞄准代码可读性和可维护性,然后它们弹出修复性能问题.如果声明返回值的名称使代码更容易阅读,那么这样做可能是个好主意,即使它使脚本需要(完全无关紧要的)更长的时间来运行.

  • 在运行此代码时,请记住第一个测试(具有实例化的测试)将花费更长的时间,因为V8引擎将动态编译整个事物.如果切换测试,您将看到运行两个测试用例所花费的时间将是相同的(有时实例化的测试用例将比没有测试用例的测试用例短).最好单独运行它们以使它们处于相同的环境中. (3认同)