javascript - 连续调用 console.log 产生不一致的结果

标签 javascript angularjs console.log angular-ui-router

好吧,我对此完全傻眼了。 (我可能忽略了一些明显的东西但是......)

我连续调用了 2 次 console.log。他们之间没有别的东西

console.log($state);
console.log($state.current);

这是生成结果的图像

Console.log screenshot

为什么 2 会产生不同的“当前”对象?怎么会这样?


上下文:

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

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

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

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;
        }
    );
}];

可能的相关问题

最佳答案

好吧,这里是那些偶然发现这个问题的人的答案。

简答

Console.log 显示最后执行状态的深层可变对象,而不是调用 console.log 时的状态

更多详情

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

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

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

关于javascript - 连续调用 console.log 产生不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22059811/

相关文章:

c# - 使用 angular-ui-router 避免 .NET MVC Controller 调用

javascript - 为什么 console.log 会这样?

javascript - 为什么 useEffect 中的 console.log 运行两次

javascript - jqGrid 分页器在滚动分页中不可见

javascript - 无需提供 key 即可从客户端的 API 获取数据

angularjs - 如何制作动态下拉菜单?

javascript - 记住 ng-grid 分组打开||折叠状态

google-chrome-devtools - Chrome 开发工具 - 在控制台中显示特殊字符

javascript - 使用 jQuery 或 javascript 删除循环行内高度

javascript - Cypress 可以运行从 Cypress 文件夹外部导入的测试文件吗?