Arrow Functions

/* 90s */
function sayHi(userName) {
    console.log('Hi ' + userName);
}

/* 2000s */
var sayHi = function (userName) {
    console.log('Hi ' + userName);
};

/* 2015 */
const sayHi = (userName) => {
    console.log('Hi ' + userName);
});

No binding

Arrow functions cannot be bound to objects. The this variable's value will always be the one of the parent closure.

class Customer {

    constructor(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
    
    sayHi() {
        console.log('Hi ' + this.firstName);
    }
    
    sayHiLater() {
        setTimeout(() => {
            this.sayHi();
        }, 1000);
    }

}

Example with Array.filter and Array.map

One-liner

In most cases, callbacks are just simple one-liners.

In this case, curly braces {} and the return statement can be removed.

If the arrow function only takes one parameter, the parentheses () can be removed.

Last updated