PzZZang 发表于 2021-8-31 10:25:47

关于js执行顺序的问题

本帖最后由 WeFarm 于 2021-8-31 10:27 编辑

    var xf = {"2017-1": 0, "2017-2": 0, "2018-1": 0, "2018-2": 0, "2019-1": 0, "2019-2": 0, "2020-1": 0,"2020-2": 0, "2021-1": 0,"2021-2": 0, "2022-1": 0,"2022-2": 0,}//这是一个字典,用于储存每学期的学分这里是一个函数,具体内容是:
1.console.log(xf)
2.发送一个post请求,用于获取学分数据
3.将字典值修改为相应数据

console.log(xf)在post请求之前,所以应该log每个值都是0的字典(也就是刚定义的状态),但我发现log的是获取数据之后的。
断点调试:如果在post请求打上断点,那么返回的就是每个值都是0的字典。
为什么呢?

cxxjackie 发表于 2021-8-31 10:25:48

console在打印对象时只保存对象的引用,而不是对象当时的状态(至少chrome是这样),打印出的对象是收起来的,你什么时候展开,他才会在什么时候去获取对象的值,如果对象在展开前就已经被改变了,那你看到的就是改变后的结果,这与执行顺序无关。JSON.stringify转换成字符串确实可以避免这个问题,还有一个console.table可以试试。

李恒道 发表于 2021-8-31 10:43:48

试试console.log()一下JSON.stringify后的对象

陈公子的话 发表于 2021-8-31 11:50:55

断点设在post上断到了 这个时候还是没有请求的数据就还为空   往下执行几步数据return回来之后   才会去设置在变量上
页: [1]
查看完整版本: 关于js执行顺序的问题