I have an arrow function that looks like this (simplified):
const f = arg => { arg.toUpperCase(); };
But when I call it, I get undefined
:
console.log(f("testing")); // undefined
Why?
Example:
const f = arg => { arg.toUpperCase(); };
console.log(f("testing"));
(Note: This is meant to be a clean, canonical dupetarget for the specific issue with arrow functions above.)
When you use the function body version of an arrow function (with
{}
), there is no impliedreturn
. 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
:or with a concise body:
Examples:
Slightly tangential, but speaking of
{}
: If you want the concise arrow's body expression to be an object initializer, put it in()
: