Convert function to arrow function
Replace function expressions with arrow functions, a more concise syntax.

Arrow functions are a concise syntax that can often replace the regular function syntax.
For example, function(x, y) { return x * y }
can be replaced with (x, y) => { return x * y; }
.
However, arrow functions have different semantics and cannot replace regular functions in all cases.
In particular, the scope of arrow functions (including binding of this
) is established at creation time.
This difference makes arrow functions unsuitable for using them as methods, constructors, and in call
, apply
, and bind
calls.
What do I need to consider?
Anonymous functions are converted into arrow functions unless there is direct usage of this
, arguments
, etc.
The replaced functions might be used in other parts of the codebase in ways that are incompatible with arrow functions, for example:
- as methods
- as constructors
- with
bind
,apply
, orcall
In those cases, changing them into arrow functions may lead to undesired behavior and errors at runtime.
However, this refactoring does not convert functions that have reference to this
, unless they are immediately bound, and will therefore prevent many of those errors.
const f = function() {
console.log("my function");
};
// problematic usages of 'f' that do not work with arrow functions somewhere else
// in the code, potentially in a different module:
const example1 = new f()
const example2 = {
exampleMethod: f
};
const example3 = f.bind(this);
Configuration
- Code Assist ID (for the configuration file):
convert-function-to-arrow-function
- You can configure custom keyboard shortcuts with this code action kind:
refactor.convert.p42.convert-function-to-arrow-function
- This code assist provides refactoring suggestions. Learn how to configure the refactoring suggestion visibility.