nodejs无法读取全局变量

图片描述

如图,调试时键入 node app.js http://www.baidu.com
返回的结果为 0 1

第10行可以正确读取到dataList.length
为什么17行就是0了

我在最上面var不应该是全局变量吗

阅读 4.6k
4 个回答

因为是异步的

就类似于 执行了第 4 行,接着执行了第 17 行,然后第 10 行才执行完。

异步啊,执行17行的时候上面的遍历还没结束,length当然是0

刚写js ? 这明显是异步操作啊,forEach和console基本是同步执行的,所以17行会是0

就是整个流程会按照顺序执行下来,遇到异步的话也是会继续执行的,所以这个结果就是执行到17行的时候,异步还没完成。所以才得到空值,

在es6中有一个Promise对象,可以在异步结束之后提取到异步的返回结果,你可以试一下。或者你可以要是想在全局中找到的话,你可以在全局中再设置一个用来标志异步完成的回调值,并且在异步中改变值,然后用 if 来判断是否改变

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题