V8 developer here. Arrow functions are (mostly) just "syntactic sugar" for conventional function declarations. There is no performance difference.

Answer from jmrk on Stack Overflow
🌐
Reddit
reddit.com › r/javascript › bound function vs arrow function performance
r/javascript on Reddit: Bound function vs arrow function performance
September 12, 2018 -

I was doing some research whether I should use arrow functions or functions with bind(this). I have a class that will be instantiated multiple times (x1000) in some specific scenarios.

Google seems to return results related to react only which is not my case.The only valid info I found was this one https://medium.com/@charpeni/arrow-functions-in-class-properties-might-not-be-as-great-as-we-think-3b3551c440b1 + some stackoverflow answers stating the exact opposite so I decided to do my own tests.

I do care about the instantiation of classes, not so much about calling of the functions itself (as it will be rare in my case)

I wrote this simple typescript (compiled to ES6) to do some tests

class FuncClass {
  val = 5;
  constructor() { this.func = this.func.bind(this); }
  func() { return this.val; }
}

class ArrowClass {
  val = 5;
  arrow = () => this.val;
}

const outterCount = 20;
const count = 100000;

const fc = [];
export function funcClassTest() {
  for (let out = 0; out < outterCount; out++) {
    console.time('funcClass');
    for (let index = 0; index < count; index++) {
      const x = new FuncClass();
      //x.func();
      //fc.push(x);
    }
    console.timeEnd('funcClass');
  }
}

const ac = [];
export function arrowClassTest() {
  for (let out = 0; out < outterCount; out++) {
    console.time('arrowClass');
    for (let index = 0; index < count; index++) {
      const x = new ArrowClass();
      //x.arrow();(
      //ac.push(x);
    }
    console.timeEnd('arrowClass');
  }
}

My observations:

  1. Arrow functions are easier to write (obviously :))

  2. Constructing the objects is same in both cases (100k instances takes ~0.2ms on my laptop)

  3. Constructing and calling a function is a big difference (uncomment the arrow/func call, increase the counter for bigger difference). Arrow function is 1.5-2x slower then bound function.I tried also doing all calls on single instance, and the difference is almost zero.

  4. Uncoment the push call to see some memory info. This is where the biggest surprise comes. Classes with arrow function increase the heap size by ~350MBs. Bound function test needs "only" ~200MBs of heap.

My conslusion

This was obviously very simple test. I ignored the first run and run it couple times to get some averages. The results might be different with other JS engine or HW. It aimed to test my specific scenario where bound functions seem to be a winner (because of less memory usage).

The number of instances in this is test is extreme 20x100k so in real app it probably does not matter.

Do you have a similar/opposite experience?

Discussions

Traditional vs. arrow functions: when to use?
I’m currently working on the JavaScript Fundamentals code challenges (canIVote(), agreeOrDisagree(), lifePhase(), etc.), and I find myself unsure of whether the instructions in this module are lacking, or whether I’ve just missed something key and am clueless. More on discuss.codecademy.com
🌐 discuss.codecademy.com
0
0
September 12, 2023
When should I use normal functions or arrow functions?
For your average vanilla javascript project, how often do you use function with the function keyword or arrow functions? Is it okay to use more one side and less the other? Or vise versa? Or only use More on stackoverflow.com
🌐 stackoverflow.com
Arrows, function, or ???
For verbiage purposes you're talking about function declaration vs arrow syntax . It's important to note that they are functionally (no pun intended) different. The links above go into more depth but things like this binding and hoisting are present vs not respectively. There are places only function declaration can work. All that being said, for the most part I just encourage consistency. You're more likely to see/use arrow syntax in places like method callbacks because it's more terse. For that reason I typically just encourage using arrow syntax everywhere and breaking for function declaration only when necessary (rare). Consistency can be enforced with linting, but I typically don't find it necessary. More on reddit.com
🌐 r/reactjs
59
36
January 22, 2025
Can someone ELI5 when to use Arrow functions vs regular functions in Javascript?
You should be able to use arrow functions for everything. The only difference is when you pass the function to some other framework that uses this in a way that doesn't work with arrow functions. More on reddit.com
🌐 r/learnprogramming
5
1
March 28, 2022
🌐
DEV Community
dev.to › georgecoldham › using-arrow-functions-might-be-costing-you-performance-4fm6
Using arrow functions might be costing you performance - DEV Community
May 31, 2019 - Actually jsPerf shows that arrow functions with implicit return are the fastest. But the difference in performance is so small, that it shouldn't be taken into account when deciding what type of function to use.
🌐
MeasureThat
measurethat.net › Benchmarks › Show › 13762 › 0 › arrow-function-vs-normal-function-comparison
Benchmark: Arrow function vs normal function comparison - MeasureThat.net
JavaScript benchmarks, JavaScript performance playground. Measure performance accross different browsers. javascript benchmarks online.
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Functions › Arrow_functions
Arrow function expressions - JavaScript - MDN Web Docs
February 21, 2026 - Note: Class fields are defined on the instance, not on the prototype, so every instance creation would create a new function reference and allocate a new closure, potentially leading to more memory usage than a normal unbound method. For similar reasons, the call(), apply(), and bind() methods are not useful when called on arrow functions, because arrow functions establish this based on the scope the arrow function is defined within, and the this value does not change based on how the function is invoked.
🌐
Admios
admios.com › blog › writing-good-javascript-lets-not-forget-about-performance
Writing good Javascript: Let's not forget about performance
They’re actually very different from Javascript functions in that they do not have a scope. And since they don’t have a scope, you obviously can’t bind a different scope since they always use the scope of their parent. Let’s check out an example to notice the difference: Since the arrow function does not have a scope, it inherits the scope of the parent.
Find elsewhere
🌐
DEV Community
dev.to › kafeel_ahmad › mastering-javascript-functions-your-guide-to-normal-vs-arrow-functions-2onk
Mastering JavaScript Functions: Your Guide to Normal vs. Arrow Functions - DEV Community
August 23, 2024 - Q: Are arrow functions faster than normal functions? A: There is no significant performance difference between arrow functions and normal functions.
🌐
MeasureThat
measurethat.net › Benchmarks › Show › 23750 › 0 › arrow-function-vs-normal-function-vs-function-declarati
Benchmark: Arrow function vs normal function vs function declaration comparison - MeasureThat.net
October 19, 2024 - Arrow function vs normal function comparison fixed · Arrow function vs normal named function comparison · Arrow function vs normal function comparison 2 · Arrow function vs function comparison · Arrow function vs normal function comparison 3 · Comments · × ·
🌐
freeCodeCamp
freecodecamp.org › news › the-difference-between-arrow-functions-and-normal-functions
Arrow Functions vs Regular Functions in JavaScript – What's the Difference?
April 13, 2023 - Since print2 is an arrow function, it doesn't create its own this variable. Therefore, any reference to this would point to what the value of this was before the function was created. In this case where obj calls print, this was pointing to obj before print2 was created. As you can see in the results, by logging this from print2, obj is the result. ... With normal functions, you can create constructors which serve as a special function for instantiating an object from a class.
🌐
Medium
mysteryweevil.medium.com › boost-javascript-performance-arrow-functions-vs-regular-functions-5b45f9122a6c
Boost JavaScript Performance: Arrow Functions vs. Regular Functions | by Max N | Medium
March 30, 2024 - Boost JavaScript Performance: Arrow Functions vs. Regular Functions Unveiling the Nuances of Code Optimization for Efficient Execution In the ever-evolving landscape of JavaScript development …
🌐
Codecademy Forums
discuss.codecademy.com › web development
Traditional vs. arrow functions: when to use? - Web Development - Codecademy Forums
September 12, 2023 - I’m currently working on the JavaScript Fundamentals code challenges (canIVote(), agreeOrDisagree(), lifePhase(), etc.), and I find myself unsure of whether the instructions in this module are lacking, or whether I’ve ju…
🌐
Sololearn
sololearn.com › en › Discuss › 2807401 › is-arrow-functions-performance-slower-than-simple-function
Is arrow functions performance slower than simple function? | Sololearn: Learn to code for FREE!
June 8, 2021 - I assume you mean pointers to functions as opposed to direct function calls. No, they are the same speed. It's only a couple cpu cycles to resolve the pointer. It's an immesurable difference to performance.
🌐
DEV Community
dev.to › hriztam › arrow-functions-vs-normal-functions-in-javascript-2l70
Arrow Functions vs. Normal Functions in JavaScript - DEV Community
January 31, 2024 - Arrow functions lack their own this context, inheriting it from the surrounding scope. This can lead to unexpected behavior, especially in object methods. Normal functions have access to the arguments object, which holds all the parameters passed ...
🌐
Frontend Armory
frontarm.com › james-k-nelson › when-to-use-arrow-functions
When should I use arrow functions with React? – Frontend Armory
You get the improved performance from only defining functions once, but you still get the simple method-like syntax. A wise man once said that “premature optimization is the root of all evil”. He was probably exaggerating a little bit, but the point he was trying to make is a good one. You won’t introduce any bugs by using too many arrow functions.
🌐
Stack Overflow
stackoverflow.com › questions › 76782943 › when-should-i-use-normal-functions-or-arrow-functions
When should I use normal functions or arrow functions?
Use whichever one is appropriate for your needs. If it's a simple one-line evaluation, an arrow function is usually easiest. If you need to preserve this, use an arrow function.
🌐
MeasureThat
measurethat.net › Benchmarks › Show › 32263 › 0 › normal-function-vs-arrow-function-comparison
Benchmark: Normal function vs Arrow function comparison - MeasureThat.net
October 21, 2024 - JavaScript microbenchmarks, JavaScript performance playground. Measure performance accross different browsers.
🌐
Medium
dev-aditya.medium.com › understanding-this-in-javascript-arrow-functions-vs-regular-functions-704a8452c4f1
Understanding this in JavaScript: Arrow Functions vs. Regular Functions | by Aditya Yadav | Medium
April 27, 2025 - Mastering the difference between ... pitfalls. Use arrow functions where simplicity and lexical scoping shine, and opt for regular functions when you need dynamic this behavior or prototype-based inheritance....
🌐
JavaScript in Plain English
javascript.plainenglish.io › arrow-functions-vs-regular-functions-which-one-wins-e87164a5b28e
Arrow Functions vs. Regular Functions — Which One Wins? | by Infodigit | JavaScript in Plain English
July 30, 2025 - Arrow Functions vs. Regular Functions — Which One Wins? Understanding the real difference that impacts your JavaScript code. I still remember the first time I stumbled upon an arrow function. It …