箭头函数隐式返回对象字面量时必须用小括号包裹,否则大括号会被解析为函数体导致返回undefined;正确写法是() => ({ key: value })。

箭头函数返回对象字面量时,必须用小括号 () 包裹整个对象,否则大括号 {} 会被解析为函数体,导致语法错误或返回 undefined。
为什么直接写 { key: value } 会出错
因为箭头函数中,如果省略了函数体的 {},它默认返回紧随其后的表达式结果;但一旦你写了 { key: value },JS 解析器会把这对大括号当成函数体(空代码块),而不是对象字面量。此时函数没有显式 return,就默认返回 undefined。
例如:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const fn = () => { name: 'Alice' }; // ❌ 返回 undefined,{ name: 'Alice' } 被当成了代码块
console.log(fn()); // undefined
正确写法:用小括号包裹对象
给对象字面量加上圆括号,告诉 JS 这是一个表达式,不是函数体。
-
const fn = () => ({ name: 'Alice' });✅ -
const getUser = id => ({ id, name: 'Bob', active: true });✅ - 多行写法也一样,只要外层有
():const getProfile = () => ({<br> id: 1,<br> role: 'admin',<br> permissions: ['read', 'write']<br> });✅
常见误写和对比
-
() => { name: 'X' }→ 函数体是空块,返回undefined -
() => { return { name: 'X' } }→ 显式写return+ 大括号函数体,可以,但冗余 -
() => ({ name: 'X' })→ 推荐,简洁且语义清晰
扩展:返回数组或其它字面量也要注意
虽然数组字面量 [...] 不会和函数体混淆(因为函数体不能以 [ 开头),但为了一致性和可读性,建议保持风格统一。不过对象字面量是唯一容易踩坑的——只它和函数体都用 {}。
所以记住:只要你想让箭头函数「隐式返回」一个对象,就必须加 ()。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










