Why doesn't my arrow function return a value?
Solution 1:
When you use the function body version of an arrow function (with {}
), there is no implied return
. You have to specify it. When you use the concise body (no {}
), the result of the body expression is implicitly returned by the function.
So you would write that either with an explicit return
:
const f = arg => { return arg.toUpperCase(); };
// Explicit return ^^^^^^
or with a concise body:
const f = arg => arg.toUpperCase();
Examples:
const f1 = arg => { return arg.toUpperCase(); };
console.log(f1("testing"));
const f2 = arg => arg.toUpperCase();
console.log(f2("testing"));
Slightly tangential, but speaking of {}
: If you want the concise arrow's body expression to be an object initializer, put it in ()
:
const f = arg => ({prop: arg.toUpperCase()});