Javascript 连续调用console.log会产生不一致的结果

Javascript 连续调用console.log会产生不一致的结果,javascript,angularjs,console.log,angular-ui-router,Javascript,Angularjs,Console.log,Angular Ui Router,好吧,我完全被这个吓呆了。(我可能忽略了一些显而易见的事情,但是……) 我连续两次调用console.log。他们之间没有别的事了 console.log($state); console.log($state.current); 这是所产生结果的图像 为什么这两个对象会产生不同的“当前”对象?这怎么会发生 背景: 这些调用是在解决路由依赖关系时在ajax调用中进行的。如果您需要更多的代码或上下文,请告诉我 在Chrome和Firefox中确认了相同的问题 Ajax调用和包装函数(无任何修

好吧,我完全被这个吓呆了。(我可能忽略了一些显而易见的事情,但是……)

我连续两次调用console.log。他们之间没有别的事了

console.log($state);
console.log($state.current);
这是所产生结果的图像

为什么这两个对象会产生不同的“当前”对象?这怎么会发生


背景: 这些调用是在解决路由依赖关系时在ajax调用中进行的。如果您需要更多的代码或上下文,请告诉我

在Chrome和Firefox中确认了相同的问题

Ajax调用和包装函数(无任何修改)


可能的相关问题

    • 奇怪。它是一个ECMA5对象,有一个奇怪的getter吗?对于普通的$state调用来说仍然没有意义。我想不仅仅是你的GC坏了


      你确定这些是被记录的电话吗?

      好吧,这是给那些偶然发现的人的答案

      简短回答 Console.log在最后执行状态下显示深度可变对象,而不是调用Console.log时的状态

      更多细节 基本上,在处理可变的深层对象时,Console.log存储对所述对象的引用,而不是存储对象克隆

      由于存储和可视化之间存在时间间隔,当您单击箭头进一步检查时,您看到的实际上是对象的当前状态,而不是调用console.log时对象的状态


      始终确保使用“对象快照”的一种方法是调用
      Json.stringify
      或在可用时使用
      console.dir

      ajax请求的代码)是否可能触发多个ajax请求?您能告诉我$state的实际设置位置吗?其他对象会影响这个变量吗?$state是由用户界面路由器(ui router)设置的,这是一个第三方数据库AngularJs@FUserThrowError是的,其他对象会影响此变量。AngularJS在幕后做了很多事情JavaScript不是多线程的。变量不能在console.log callsOops之间更改值,没有注意到它位于承诺的同一部分。。。我该上床睡觉了。在整个项目范围内搜索console.log,这是唯一的3个匹配项请注意,Chrome上的
      console.dir
      可能不起作用(我记得它起作用了,但现在不起作用)<代码>Json.stringify有效。
      normaCtrl.publicNorma = ['$http', '$state', '$stateParams', 'baseUrl', function ($http, $state, $stateParams, baseUrl)
      {
          var id = $stateParams.id;
          return $http.get(baseUrl + "api/public/norma/" + id).then(
              function (response) {
                  console.log($state);
                  console.log($state.current);
                  console.log($state.current.title);
                  return response.data;
              }
          );
      }];