sintaxis one functions funciones funcion flecha example es6 ecmascript javascript node.js v8

javascript - functions - ¿Son las funciones de flecha más rápidas(más eficaces, más ligeras) que la declaración de una función independiente ordinaria en v8?



funciones flecha javascript (2)

Estoy haciendo esta pregunta porque mi colega y yo tenemos una disputa sobre el estilo de codificación porque prefiere la declaración de la función de las flechas:

const sum = (a, b) => a + b;

Y prefiero la declaración de función independiente de estilo antiguo:

function sum(a, b) { return a + b; }

Mi punto es que el código en el antiguo es más legible y puede distinguir más claramente las declaraciones de funciones y variables. Su punto es que el código con funciones de flecha simplemente se ejecuta más rápido.

¿Sabe algo acerca de las penalizaciones por rendimiento real (en v8) cuando usa la declaración de función independiente de estilo antiguo en lugar de las funciones de flecha? ¿Son esas penas realmente existen?


Desarrollador V8 aquí. Las funciones de flecha son (en su mayoría) solo "azúcar sintáctica" para declaraciones de funciones convencionales. No son más rápidos.


Lo siguiente muestra que:

  1. Hay una penalización por ir primero (ya sea tradicional o gordo)
  2. No hay diferencia perceptible en Chrome

function goFat() { for (var i = 0; i < 1000000; i++) { var v = ()=>{}; v(); } } function goTraditional() { for (var i = 0; i < 1000000; i++) { var v = function() {}; v(); } } function race() { var start = performance.now(); goTraditional(); console.log(''Traditional elapsed: '' + (performance.now() - start)); start = performance.now(); goFat() console.log(''Fat elapsed: '' + (performance.now() - start)); start = performance.now(); goTraditional(); console.log(''Traditional elapsed: '' + (performance.now() - start)); start = performance.now(); goFat() console.log(''Fat elapsed: '' + (performance.now() - start)); console.log(''------''); }

<button onclick="race()">RACE!</button>