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

fetch请求赋值变量后外部调用显示undefined的原因咨询

问题原因:异步执行顺序导致变量未初始化

你遇到的问题核心是fetch是异步操作,代码执行顺序和你预期的不一致:

  1. 当window.onload触发后,调用getMachineInfo()时,函数内部的fetch请求会被浏览器丢到后台处理,不会阻塞后续代码运行——也就是说,getMachineInfo()刚发起请求,浏览器就立刻执行后面的console.log语句了。
  2. 这时候fetch请求还在和服务器通信,.then回调里的变量赋值逻辑完全没执行,你的全局变量machineTypeArr、typeLen等都还是初始的undefined,所以外部打印结果都是undefined。
  3. 只有当服务器返回数据、fetch请求完成后,.then里的回调才会触发,这时候才会给全局变量赋值,所以在.then内部打印这些变量能得到正常值。

本质就是:你在变量还没被赋值的时候就去访问它了,因为异步请求的完成时间晚于你执行打印操作的时间。


内容的提问来源于stack exchange,提问作者Yangtze Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:33:20