DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Juan Alejandro Morais
Juan Alejandro Morais

Posted on • Updated on

Anonymous & arrow functions in Javascript

I've been exploring with javascript anonymous & arrow functions, and found this quite an interesting puzzle: what are the return types of these functions? Bonus points for an explanation of how some of these work (or not)

export const values = {
    key: 'value',
    getKey: function () {
        return function() {
            return this.key;
        }
    },
    getKeyArrow: function () {
        return () => this.key;
    },
    getKeyArrowCall: function () {
        return (() => this.key)();
    }
};

const v1 = values.getKey(); // function
v1(); // undefined
const v2 = values.getKeyArrow(); // function
const v3 = values.getKeyArrowCall(); // value
Enter fullscreen mode Exit fullscreen mode

Edit: I changed getKey to be a bit more difficult. The previous version executed return this.key;

Top comments (0)

11 Tips That Make You a Better Typescript Programmer

1 Think in {Set}

Type is an everyday concept to programmers, but it’s surprisingly difficult to define it succinctly. I find it helpful to use Set as a conceptual model instead.

#2 Understand declared type and narrowed type

One extremely powerful typescript feature is automatic type narrowing based on control flow. This means a variable has two types associated with it at any specific point of code location: a declaration type and a narrowed type.

#3 Use discriminated union instead of optional fields

...

Read the whole post now!