一尘不染

为什么我的arrow函数不返回值?

javascript

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

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

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

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

为什么?

例:

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

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

注意: 对于上述带有箭头功能的 特定 问题,这是一个干净,规范的重复目标。)


阅读 224

收藏
2020-04-25

共1个答案

一尘不染

当您使用箭头函数的函数主体版本(带有{})时,没有暗示return。您必须指定它。当您使用 简洁 主体(no
{})时,主体表达式的结果将由函数隐式返回。

因此,您可以使用显式的方式编写该代码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()});
2020-04-25