JavaScript函数默认返回undefined,这是语言底层机制:无论有无return语句、是否异步、是否箭头函数,只要未显式返回值,最终都返回undefined。
javascript 中函数默认返回 undefined,这是语言的底层机制,不是“没写 return”才出现的特殊情况,而是每个函数调用必然产生的结果。
函数体中没有 return 语句
这是最常见也最容易被忽略的场景。只要函数执行完所有语句后自然结束,引擎就会自动补上 return undefined;
- 即使函数有参数、有逻辑运算、有 console.log,只要没显式 return,返回值就是
undefined - 例如:function foo() { console.log('hi'); },调用 foo() 的返回值是
undefined,不是void 0或 null - 注意:console.log() 本身也返回
undefined,但它只是语句,不影响外层函数返回值
return 后面没有跟任何表达式
显式写了 return,但后面紧跟分号或换行,等价于 return undefined;
- 例如:function bar() { return; } 或 function baz() { return\n; },都返回
undefined - 这和
return void 0效果一致,但语义更清晰——明确表示“不返回有意义的值” - ESLint 等工具常提示“unexpected return value”,正是为了提醒这种隐式行为
异步函数中 resolve 或 reject 前的 return
在 Promise 链或 async 函数里,return 的位置会影响返回值类型,但未 return 时仍为 undefined
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
async function fetchUser() { fetch('/api/user'); } —— 返回一个 Promise,但 Promise 的 fulfillment value 是
undefined -
async function getData() { return await fetch('/api/data'); } —— 返回的是 fetch 的 Response 对象,不是
undefined - 关键点:async 函数总是返回 Promise;Promise 的 resolved 值取决于函数体最后 return 的内容,没 return 就是
undefined
箭头函数单表达式省略 return 时
箭头函数若用圆括号包裹对象字面量,容易误以为返回了对象,实际返回 undefined
立即学习“Java免费学习笔记(深入)”;
- 错误写法:const getUser = () => { name: 'Alice' }; —— 大括号被解析为函数体,不是对象字面量,且无 return,返回
undefined - 正确写法:const getUser = () => ({ name: 'Alice' }); —— 圆括号强制表达式求值,返回对象
- 这个陷阱本质仍是“没 return”,只是语法糖掩盖了意图

















