多行函数体指含两条及以上语句的函数体,必须用花括号包裹并显式return,否则返回undefined;单行仅限一个表达式且隐式返回;返回对象字面量需用小括号包裹。

多行函数体必须用花括号 {} 包裹,并且必须显式使用 return 语句返回值,否则函数默认返回 undefined。
什么时候算“多行函数体”
只要函数体中包含两条或以上语句(包括声明、计算、调用、条件判断等),就属于多行函数体。哪怕只多加了一条 console.log,也需加花括号和 return。
-
✅ 正确:有逻辑处理 + 返回值
const calc = (a, b) => {
const sum = a + b;
console.log(`计算结果:${sum}`);
return sum;
}; -
❌ 错误:省略 return,结果为 undefined
const calc = (a, b) => {
const sum = a + b;
console.log(sum); // 没有 return
}; // 调用后返回 undefined
单行 vs 多行的边界很明确
单行函数体指**仅一个表达式**,且该表达式会被自动作为返回值;一旦引入变量声明、if、for、分号分隔的多个操作,就必须转为多行写法。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
✅ 单行(隐式返回)
const len = str => str.length;
const upper = s => s.toUpperCase(); -
✅ 多行(显式 return)
const formatName = (first, last) => {
if (!first || !last) return '';
return `${first.charAt(0).toUpperCase()}. ${last}`;
};
返回对象字面量是个特例
即使只写一行,若直接返回对象(如 { name: 'x', id: 1 }),也必须用小括号包裹,否则花括号会被解析为函数体代码块。
-
✅ 正确:括号包裹对象
const user = (n, i) => ({ name: n, id: i }); -
❌ 错误:无括号 → 语法错误或空函数体
const user = (n, i) => { name: n, id: i }; // 不是合法对象,也不返回任何值
常见误用场景提醒
容易混淆的是“看起来像一行,实则含多条执行逻辑”的情况,比如链式调用中混入副作用操作:
-
⚠️ 看似简洁,但实际无效
const logThenDouble = x => console.log(x) && x * 2; // console.log() 返回 undefined,&& 后不执行 -
✅ 安全写法(多行 + 显式 return)
const logThenDouble = x => {
console.log(x);
return x * 2;
};
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










