箭头函数省略大括号时隐式返回表达式结果,加大括号后须显式return,否则返回undefined;返回对象字面量需用小括号包裹以避免被解析为函数体。

箭头函数在省略大括号时,会隐式返回表达式的结果,无需写 return 关键字;一旦加上大括号,就必须显式使用 return,否则返回 undefined。
单表达式省略大括号:自动返回值
当箭头函数体只有一个表达式且没有大括号时,JavaScript 会将其作为返回值自动返回:
const add = (a, b) => a + b; // 返回 a + b 的结果 const getName = () => "Alice"; // 返回字符串 "Alice" const isActive = () => true; // 返回布尔值 true
这种写法简洁,适合纯计算、映射或条件推导等场景。
带大括号时:必须显式 return
只要函数体用了大括号(即使只有一行),就进入“函数体模式”,不再有隐式返回:
立即学习“Java免费学习笔记(深入)”;
const add = (a, b) => { a + b }; // ❌ 返回 undefined
const add = (a, b) => { return a + b }; // ✅ 正确返回
常见误用是以为大括号只是格式美化,实际它彻底改变了返回行为。
对象字面量的特殊处理
想隐式返回一个对象字面量时,必须用小括号包裹,否则花括号会被解析为函数体:
const createObj = () => ({ name: "Bob", age: 30 }); // ✅ 正确:() 包裹确保是表达式
const createObj = () => { name: "Bob", age: 30 }; // ❌ 解析为代码块,无 return,返回 undefined
本质是语法歧义问题:花括号既可表示对象字面量,也可表示函数体,括号强制其作为表达式处理。
多语句与副作用操作
如果需要执行多个操作(如日志、修改变量、条件分支),必须加花括号并显式 return:
const process = (x) => {
console.log("Processing:", x);
const result = x * 2;
if (result > 10) return "large";
return "small";
};
这类函数已脱离“纯表达式”范畴,强调逻辑流程而非单一求值。










