You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Promise.then中传入void表达式后,后续then的参数未变为undefined?

为什么最后一个then的参数x不是undefined?

咱们拆解这段代码一步步说清楚:

  1. 先看void console.log('3'):

    • console.log('3')会立即同步执行(和Promise的异步流程没关系),输出3。
    • void运算符的作用是执行后面的表达式,然后返回undefined,所以第一个then的参数其实是undefined。
  2. Promise的then方法有个关键规则:

    • 如果传给then的参数不是函数(比如这里的undefined),这个then就会变成一个「透传」环节——它不会修改前一个Promise的resolved值,直接把这个值原封不动地传给下一个then。

所以第一个then因为参数不是函数,直接把Promise.resolve(2)的结果2传递给了最后一个then,因此x的值是2,而非undefined。

内容的提问来源于stack exchange,提问作者Andreas Herd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:30:40