箭头函数单行隐式返回对象时必须用小括号包裹,否则大括号被解析为函数体代码块而返回undefined;正确写法如() => ({id: 1, name: 'Bob'})。

箭头函数在单行表达式中隐式返回对象字面量时,必须用小括号 () 包裹对象,否则大括号会被解析为函数体的代码块,导致语法错误或返回 undefined。
为什么直接写 { key: value } 会出错
因为箭头函数的单表达式语法中,大括号 {} 默认表示函数体(即语句块),而不是对象字面量。例如:
const fn = () => { name: 'Alice' }; // ❌ 返回 undefined,{...} 是代码块,name: 'Alice' 是带标签的语句
这不会报语法错误,但实际执行的是一个空函数体,隐式返回 undefined。
正确写法:用小括号包裹对象
把对象字面量包在 () 中,就能让引擎识别为表达式,从而触发隐式返回:
-
const getUser = () => ({ id: 1, name: 'Bob' });✅ 返回对象 -
const getCoords = (x, y) => ({ x, y });✅ 利用属性简写 -
const createConfig = (base) => ({ ...base, enabled: true });✅ 支持展开和计算属性
常见陷阱与提醒
- 不能省略小括号:哪怕只有一行,
() => { a: 1 }和() => ({ a: 1 })完全不同 - 如果需要多行逻辑,就别强求单行隐式返回——改用函数体 + 显式
return - 注意自动分号插入(ASI):若换行写成
() =>\n{ a: 1 },JS 会在=>后加空分号,导致函数立即返回undefined
本质是语法解析优先级问题:小括号强制把花括号解释为对象字面量表达式,而非代码块。记牢“想返回对象,就套一层 ()”就够了。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











