箭头函数省略return的前提是单表达式且无花括号;加花括号必须显式return,否则返回undefined;对象字面量需用小括号包裹以防被解析为代码块。

箭头函数中能省略 return 关键字,前提是函数体满足「单表达式、无花括号」结构。只要加了花括号 {},就必须显式写 return;否则会返回 undefined。
只有一条表达式且无花括号 → 自动隐式返回
当箭头函数的函数体是**一个表达式**(不是语句),且**没有用花括号包裹**时,JavaScript 会自动将其结果作为返回值:
-
x => x * 2→ 返回x * 2的计算结果 -
() => "hello"→ 返回字符串"hello" -
obj => ({ name: obj.name })→ 注意:圆括号包裹对象字面量,避免被解析为代码块,返回该对象
用了花括号 → 必须显式 return
一旦函数体用了花括号 {},它就变成了「函数体语句块」,不再有隐式返回:
-
x => { x * 2 }→ 不报错,但返回undefined(因为没写return) -
x => { return x * 2 }→ 正确,显式返回结果 -
() => { console.log("hi"); }→ 返回undefined,即使只有一行语句
常见陷阱:对象字面量必须用小括号包裹
想隐式返回一个对象字面量时,不能直接写 x => { id: x },这会被解析为带标签的语句块(id: 是标签,x 是孤立表达式),语法上不报错但逻辑错误,且不返回对象。
正确写法是用小括号包裹对象,强制解释为表达式:
- ✅
x => ({ id: x })→ 隐式返回{ id: x } - ❌
x => { id: x }→ 实际等价于x => { id: x; },返回undefined
多表达式或含控制流 → 只能显式 return
只要需要执行多个操作、声明变量、使用 if/for、提前退出等,就必须用花括号 + 显式 return:
x => { if (x > 0) return x; else return -x; }(a, b) => { const sum = a + b; return sum * 2; }arr => { arr.push(1); return arr; }
隐式返回本质是语法糖,只适用于纯表达式场景。理解“是否带花括号”和“是否是表达式”这两个判断点,就能准确预测返回行为。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











