为什么我的箭头功能 return 不是一个值?

Why doesn't my arrow function return a value?

我有一个箭头函数,看起来像这样(简化):

const f = arg => { arg.toUpperCase(); };

但是当我调用它时,我得到 undefined:

console.log(f("testing")); // undefined

为什么?

示例:

const f = arg => { arg.toUpperCase(); };
console.log(f("testing"));


(注: 这意味着 特定 箭头函数问题的干净,规范的 dupetarget以上。)

当你使用箭头函数的函数体版本时({}),没有隐含的return。你必须指定它。当您使用 concise 主体(无 {})时,主体表达式的结果由函数隐式返回。

所以你可以用明确的 return:

来写
const f = arg => { return arg.toUpperCase(); };
// Explicit return ^^^^^^

或者用简洁的正文:

const f = arg => arg.toUpperCase();

示例:

const f1 = arg => { return arg.toUpperCase(); };
console.log(f1("testing"));

const f2 = arg => arg.toUpperCase();
console.log(f2("testing"));


稍微切线,但说到{}:如果你想让简洁箭头的主体表达式成为一个对象初始化器,把它放在()中:

const f = arg => ({prop: arg.toUpperCase()});