好吧,我对此完全傻眼了。 (我可能忽略了一些明显的东西但是......)
我连续调用了 2 次 console.log。他们之间没有别的东西
console.log($state);
console.log($state.current);
这是生成结果的图像
为什么 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/