JavaScript中顶级async函数返回什么?无显式返回时返回值解析
async函数的返回值规则
你完全正确——所有async函数的返回值必然是Promise对象,和函数内部有没有显式return、有没有使用await都没关系。
针对你给出的例子:
(async function myFunc() { const list = await someFunc(); const anotherList = someOtherFunc(list); console.log(anotherList); })();
这个函数没有写任何return语句,它会默认返回一个已resolved状态的Promise,其resolve的结果是undefined——这和普通同步函数没写return时返回undefined的逻辑一致。
再补充几个关键细节:
- 如果async函数里写了
return 123,它不会直接返回123,而是返回一个resolved值为123的Promise; - 要是函数内部抛出了错误,这个Promise会进入rejected状态,携带抛出的错误信息;
- 不管是用立即执行表达式(IIFE)调用,还是在全局同步代码里调用,async函数的返回值类型永远是Promise,不会变成Void或者其他类型。
内容的提问来源于stack exchange,提问作者Matt Styles
相关产品推荐
相关产品推荐

