箭头函数仅在函数体为单个表达式且未用大括号{}包裹时隐式返回;一旦使用{},必须显式return;对象字面量需用小括号包裹才能隐式返回。

箭头函数在 JavaScript 中支持隐式返回值,前提是函数体是**单个表达式**且**不使用大括号 `{}`**。此时,该表达式的计算结果会自动作为返回值,无需写 `return` 关键字。
什么情况下能隐式返回?
只有满足以下全部条件时,箭头函数才触发隐式返回:
- 函数体是**一个表达式**(比如 `x + 1`、`obj.name`、`arr.map(x => x * 2)`),不是语句(如 `if`、`for`、`let x = 1`)
- **没有使用花括号 `{}` 包裹函数体**;一旦用了 `{}`,就必须显式写 `return`
- 即使表达式跨多行,只要没用 `{}`,依然隐式返回(但需注意换行后语法是否合法)
常见写法对比
✅ 隐式返回(简洁有效):
const getName = user => user.name;
const double = nums => nums.map(n => n * 2);
❌ 用了 `{}` 就失去隐式返回(返回 `undefined`):
const add = (a, b) => { a + b }; // ❌ 没 return,实际返回 undefinedconst getName = user => { user.name }; // ❌ 同样返回 undefined
✅ 补上 `return` 才能生效:
const add = (a, b) => { return a + b }; // ✅ 显式返回需要特别注意的陷阱
- 对象字面量不能直接隐式返回:`() => { a: 1 }` 是块级作用域加标签语句,不是对象;必须用小括号包裹:`() => ({ a: 1 })`
- 空箭头函数 `() => {}` 返回 `undefined`,不是空对象
- 异步操作中,`() => fetch(url)` 隐式返回 Promise;但 `() => { fetch(url) }` 不返回任何值,可能造成逻辑错误
什么时候推荐用隐式返回?
- 纯计算型单表达式(如映射、过滤、简单转换)
- 作为高阶函数参数时提升可读性,例如 `arr.map(x => x.toUpperCase())`
- 避免冗余的 `return` 和 `{}`,让代码更紧凑
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











